设置音频编码属性
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。
技术原理
SDK 默认使用 AUDIO_PROFILE_DEFAULT
编码属性和 AUDIO_SCENARIO_DEFAULT
应用场景。如果默认设置无法满足你的需求,调用如下 API 设置音频编码属性和应用场景。
API | 描述 |
---|---|
create(config.mAudioScenario) | 在创建 RtcEngine 实例时,设置音频应用场景。默认值为 AUDIO_SCENARIO_DEFAULT 。 |
setAudioProfile(profile) | 在加入频道前后均可设置音频编码属性。 |
setAudioScenario | 在加入频道前后均可设置音频应用场景。 |
前提条件
在实现设置音频编码属性和应用场景前,请确保已在你的项目中实现基本的实时音视频功能。详见实现音视频互动。
实现方法
本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你项目的 /app/java/com.example.<projectname>/MainActivity
文件中。
1 对 1 互动教学
1 对 1 互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码:
// 在创建 RtcEngine 实例时,设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.DEFAULT);
engine = RtcEngine.create(config);
// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_DEFAULT);
游戏开黑
该场景主要要求传输人声、无杂音、节省码率。声网推荐如下设置:
// 在创建 RtcEngine 实例时,设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.CHATROOM);
engine = RtcEngine.create(config);
// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_SPEECH_STANDARD);
剧本杀
该场景主要要求声音表现力好,上下麦时无音量、音质变化。声网推荐如下设置:
// 在创建 RtcEngine 实例时,设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.CHATROOM);
engine = RtcEngine.create(config);
// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_STANDARD);
KTV
KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码:
// 在创建 RtcEngine 实例时,设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.GAME_STREAMING);
engine = RtcEngine.create(config);
// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_HIGH_QUALITY);
语音电台
语音电台一般会使用专业的音频设备,主要要求高音质和立体声。在你的项目中添加如下代码:
// 在创建 RtcEngine 实例时,设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.GAME_STREAMING);
engine = RtcEngine.create(config);
// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO);
音乐教学
该场景主要要求高音质,支持将扬声器播放的音效传输到远端。声网推荐如下设置:
// 在创建 RtcEngine 实例时,设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.GAME_STREAMING);
engine = RtcEngine.create(config);
// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_STANDARD_STEREO);
双师课堂
该场景主要要求高音质,呈现丰富的声音效果,上下麦时无音量、音质变化。声网推荐如下设置:
// 在创建 RtcEngine 实例时,设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.CHATROOM);
engine = RtcEngine.create(config);
// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_STANDARD_STEREO);
相关信息
本节提供在实现设置音频编码属性和应用场景时可能需要的信息。
相关文档
示例项目
声网在 GitHub 上提供已实现设置音频编码属性和应用场景功能的开源示例项目 JoinChannelAudio。你可以下载体验并参考源代码。
API 参考
音量类型
音频应用场景会影响音量类型。不同音量类型直接的区别如下:
- 通话音量:
- 音质较低
- 可完全消除用户设备产生的回声,但可能会造成音乐或歌声的丢失。
- 无法被调整为 0。
- 媒体音量:
- 音质较高
- 对音乐和歌声有较好的表现力,但可能无法完全消除用户设备产生的回声。
- 可以被调整为 0。
下表展示不同音频应用场景、用户角色、音频路由下 SDK 使用的音量类型。
-
在
AUDIO_SCENARIO_DEFAULT
音频应用场景下:有线耳机 扬声器 听筒 蓝牙耳机 多主播(直播场景)或用户(通信场景) 媒体音量 通话音量 通话音量 通话音量 单主播(直播场景) 媒体音量 媒体音量 通话音量 通话音量 观众(直播场景) 媒体音量 媒体音量 通话音量 媒体音量 -
在
AUDIO_SCENARIO_GAME_STREAMING
或AUDIO_SCENARIO_CHORUS
音频应用场景下:有线耳机 扬声器 听筒 蓝牙耳机 多主播(直播场景)或用户(通信场景) 媒体音量 媒体音量 通话音量 通话音量 单主播(直播场景) 媒体音量 媒体音量 通话音量 通话音量 观众(直播场景) 媒体音量 媒体音量 通话音量 媒体音量 -
在
AUDIO_SCENARIO_CHATROOM
音频应用场景下:有线耳机 扬声器 听筒 蓝牙耳机 多主播(直播场景)或用户(通信场景) 媒体音量 通话音量 通话音量 通话音量 单主播(直播场景) 媒体音量 通话音量 通话音量 通话音量 观众(直播场景) 媒体音量 通话音量 通话音量 通话音量