跳到主要内容

音频模式

为了满足不同场景对音频设置的需求,同时降低使用复杂度,融云 RTCLib 从 5.1.0 开始,对音频码率(音频通话质量)和音频模式(音频通话模式)进行了接口合并封装,并重新设计对外提供音频码率 + 音频模式的接口,推荐使用最新接口。

提示

SDK 5.1.14 优化了接口对音量的处理,因此推荐在 5.1.14 及之后版本上使用此接口。

音频模式与音质合称为音频属性。SDK 针对不同使用场景设计了音频模式,并提供了三个音质选项。音频模式与音质可任意配合使用。

了解音频模式

SDK 提供三种音频模式(audioScenario)。请在推荐场景下使用。

提示
  • SDK 设置音频模式时会修改 Android AudioManager 的 mode。如果您的应用中也需要对 AudioManager 进行相关操作,您可能需要尽量避免两者发生冲突,否则会影响融云音视频 SDK 声音播放效果。

  • 受 Android AudioManager 的 mode 的特性影响,SDK 提供的 DEFAULT 模式比其他两种模式播放音量相对较小。

音频模式枚举使用场景建议
DEFAULT仅推荐通话,会议或类似场景下使用。如果在语聊房、直播、音乐教学场景中使用 DEFAULT 模式,可能会出现音乐音质差、伴奏音量高低不稳定的问题.
MUSIC_CHATROOM语聊房,音乐播放场景。不可在会议场景下使用 MUSIC_CHATROOM,否则会影响 VOIP 应用的音频模式规则。
MUSIC_CLASSROOM音乐教学场景。不建议在会议、语聊房、直播场景中使用 MUSIC_CLASSROOM,否则有出现回声问题的风险。

了解音质与码率

音质枚举码率推荐使用场景
SPEECH人声音质,编码码率最大值为 32Kbps通话,会议场景(默认)
MUSIC标清音乐音质,编码码率最大值为 64Kbps语聊房,音乐播放场景
MUSIC_HIGH高清音乐音质,编码码率最大值为 128Kbps音乐教学场景

如何匹配模式和音质

音频通话模式与音质可以任意组合,达到特殊场景需求。下表列出了几种常见场景推荐值,您也可以直接参考上文中的示例代码。

场景AudioScenario 音频模式AudioQuality 音质
通话,会议场景(默认)DEFAULTSPEECH
语聊房,音乐播放场景MUSIC_CHATROOMMUSIC
音乐教学场景MUSIC_CLASSROOMMUSIC_HIGH
提示

由于 DEFAULT 模式和其他两种模式在播放音量上存在差别,会导致切换前后播放音量不一致,因此不建议使用 DEFAULT 模式和其他两种模式连续切换。

设置音频场景与音频质量

SDK 在 RCRTCMicOutputStream 类中提供了 setAudioQuality 方法,用于设置音频场景 AudioScenario 与音频质量 AudioQuality。您可以在加入房间前或者加入房间后,通过 RCRTCEngine.getInstance().getDefaultAudioStream() 实例进行调用设置。详情如下:

音频通话质量可以和音频通话模式进行任意组合,达到特殊场景需求,以下示例代码为几种常见场景推荐值。

/**
普通通话模式(普通音质模式), 满足正常音视频场景,人声音质,编码码率最大值为32Kbps。音量调节 '通话音量'。
*/
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(AudioQuality.SPEECH, AudioScenario.DEFAULT);

/**
音乐教室模式, 提升声音质量, 适用对乐器演奏音质要求较高的场景,高清音乐音质,编码码率最大值为128Kbps。此模式下需要收听一端静音麦克风,音量调节 ’媒体音量‘。
*/
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(AudioQuality.MUSIC_HIGH, AudioScenario.MUSIC_CLASSROOM);

/**
音乐聊天室模式, 提升声音质量, 适用对音乐演唱要求较高的场景,高清音乐音质,编码码率最大值为128Kbps。音量调节 '媒体音量'。
*/
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(AudioQuality.MUSIC_HIGH, AudioScenario.MUSIC_CHATROOM);