跳到主要内容

音频路由

提示

SDK 从 5.2.3 开始提供音频路由功能。

SDK 提供音频路由功能,用于管理 App 播放音频时的输出设备。主要功能如下:

  • 设置默认音频路由。在无外接设备时,可设置默认使用的设备内置音频输出设备输出(听筒或扬声器)。一旦接入外部设备,SDK 仅会使用外接设备。
  • 在接入有线耳机、蓝牙耳机、蓝牙音响等外部设备时,自动根据设备连接顺序、可用状态切换当前输出设备。当有多个外接设备时,音频会通过最后一个接入的设备播放。

本文主要描述了 SDK 在不同场景下的默认音频路由,默认音频路由修改方式,和音频路由监听方法。

默认音频路由

默认音频路由是指 App 所在设备的默认音频输出设备,例如移动设备上的听筒或扬声器。SDK 默认音频路由为扬声器。

更改默认音频路由

当 App 用户没有连接外部音频输出设备时,SDK 会使用默认音频路由。

加入房间前,调用 setDefaultAudioRouteToSpeaker 可更改默认音频路由。通过该方法的 defaultToSpeaker 参数控制 SDK 是否使用扬声器播放音频。

以下示例中将默认音频路由修改为听筒。

[[RCRTCEngine sharedInstance] setDefaultAudioRouteToSpeaker:NO];

更改当前音频路由

在 App 用户未接入任何外接音频输出设备时,SDK 会使用默认音频路由的设置。如需更改当前音频路由,有两种方式:

  • 直接修改 SDK 默认音频路由配置,您可以在通信过程中在扬声器、听筒之间动态切换。
  • 在 App 已将 SDK 默认音频路由设置为听筒的前提下,可调用 EnableSpeaker 方法并设置 YES,实现将音频从听筒转为扬声器输出的效果。设置为 NO 时 SDK 会恢复使用默认音频路由的配置。该方法在加入房间前后调用均可生效。该方法只切换当前的音频路由为扬声器,不会影响 SDK 的默认音频路由设置。

以下示例中调用 EnableSpeaker 方法,更改当前音频路由为扬声器。

[[RCRTCEngine sharedInstance] enableSpeaker:YES];

在 App 用户接入外接音频输出设备后,SDK 会自动管理音频路由。具体行为如下:

  1. 音频路由自动切换到 App 用户连接的外部音频输出设备。
  2. 如果 App 用户先后连接了多个外部设备,则音频路由会自动切换到最后一个连接的音频输出设备。
  3. 如果 App 用户移除当前输出设备,则音频路由会自动切换到上一个连接的音频输出设备。
  4. 如果 App 用户移除所有外接音频输出设备,SDK 切换到使用默认音频路由输出。
提示

因为 iOS 系统限制,当移动设备连接到耳机或蓝牙音频设备时,无法将音频路由更改为扬声器。

获取当前音频路由

对音频路由的任何更改都会触发 RCRTCEngineEventDelegate 中的 didAudioRouteChanged 回调。您可以使用此回调来获取当前的音频路由。

/// 音频路由变更回调
/// @param routeType 当前音频路由类型
- (void)didAudioRouteChanged:(RCRTCAudioRouteType)audioRouteType {
/// 扬声器
RCRTCAudioRouteTypeSpeaker,
/// 听筒
RCRTCAudioRouteTypeReceiver,
/// 耳机
RCRTCAudioRouteTypeHeadphone,
/// 蓝牙
RCRTCAudioRouteTypeBluetooth,
}