音频模式
为满足不同场景的音 频配置需求并降低使用复杂度,自 5.1.0 起,融云 RTCLib 将音频码率(音频通话质量)与音频模式(音频通话模式)进行接口合并封装,并重新设计了对外的“音频码率 + 音频模式”接口,推荐使用最新接口。
提示
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 | 人声音质,编码码率最大值为 32 Kbps | 通话、会议场景(默认) |
MUSIC | 标清音乐音质,编码码率最大值为 64 Kbps | 语聊房、音乐播放场景 |
MUSIC_HIGH | 高清音乐音质,编码码率最大值为 128 Kbps | 音乐教学场景 |
如何匹配模式和音质
音频通话模式与音质可以任意组合,以满足特殊场景需求。下表列出常见场景的推荐值;您也可以直接参考下文示例代码。
场景 | AudioScenario 音频模式 | AudioQuality 音质 |
---|---|---|
通话、会议场景(默认) | DEFAULT | SPEECH |
语聊房、音乐播放场景 | MUSIC_CHATROOM | MUSIC |
音乐教学场景 | MUSIC_CLASSROOM | MUSIC_HIGH |
提示
由于 DEFAULT
与另外两种模式在播放音量上存在差异,会导致切换前后音量不一致,因此不建议频繁在 DEFAULT
与其他模式之间切换。
设置音频场景与音频质量
SDK 在 RCRTCMicOutputStream
提供 setAudioQuality
方法,用于设置音频场景 AudioScenario 与音频质量 AudioQuality。您可以在加入房间前或加入房间后,通过 RCRTCEngine.getInstance().getDefaultAudioStream()
调用进行设置。
Java
/**
* 普通通话模式(普通音质模式),满足常规音视频场景。
* 人声音质,编码码率最大值为 32 Kbps。音量调节为“通话音量”。
*/
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(AudioQuality.SPEECH, AudioScenario.DEFAULT);
/**
* 音乐教室模式,提升声音质量,适用于对乐器演奏音质要求较高的场景。
* 高清音乐音质,编码码率最大值为 128 Kbps。此模式下需要收听一端静音麦克风,音量调节为“媒体音量”。
*/
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(AudioQuality.MUSIC_HIGH, AudioScenario.MUSIC_CLASSROOM);
/**
* 音乐聊天室模式,提升声音质量,适用于对音乐演唱要求较高的场景。
* 高清音乐音质,编码码率最大值为 128 Kbps。音量调节为“媒体音量”。
*/
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(AudioQuality.MUSIC_HIGH, AudioScenario.MUSIC_CHATROOM);