功能描述
为了满足不同应用场景对音质的不同需求,SDK 提供了可对音频质量配置的接口,根据应用场景自定义搭配实现预期效果。比如语音电台、唱歌比赛类等。
实现方法
在设置音频属性前,请确保已在你的项目中实现基本的实时音视频功能。详见快速开始文档:
- iOS: 实现音视频通话
在通信之前,调用 SDK 提供的 setAudioProfile
方法可以根据场景需求灵活配置适合的音质属性。
参数说明
参数 | 描述 |
---|---|
profile | 代表不同的音频参数配置(音质),比如采样率、码率和编码模式等: ARAudioProfileDefault(0):默认设置。通信场景下为 ARAudioProfileSpeechStandard(1),直播场景下为 ARAudioProfileMusicStandard(2) ARAudioProfileSpeechStandard(1):指定 32 kHz 的采样率,语音编码,单声道,编码码率最大值为 18 Kbps ARAudioProfileMusicStandard(2):指定 48 kHz 的采样率,音乐编码,单声道,编码码率最大值为 48 Kbps ARAudioProfileMusicStandardStereo(3):指定 48 kHz 的采样率,音乐编码,双声道,编码码率最大值为 56 Kbps ARAudioProfileMusicHighQuality(4):指定 48 kHz 的采样率,音乐编码,单声道,编码码率最大值为 128 Kbps ARAudioProfileMusicHighQualityStereo(5):指定 48 kHz 的采样率,音乐编码,双声道,编码码率最大值为 192 Kbps |
scenario | 设置音频的使用场景,如娱乐、教学和游戏直播等。声音的流畅度、噪声抑制、音质等会根据不同的场景做出优化: AUDIO_SCENARIO_DEFAULT(0):默认的音频应用场景 AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT(1):娱乐应用,适用于需要频繁上下麦的场景AUDIO_SCENARIO_EDUCATION(2):教育场景 AUDIO_SCENARIO_GAME_STREAMING(3):游戏直播以及高音质互动应用,音质优先,适用于聊天房唱歌表演的场景AUDIO_SCENARIO_SHOWROOM(4):秀场应用,连麦下音质仅次于 GAME_STREAMING,拥有更好的专业外设支持AUDIO_SCENARIO_CHATROOM_GAMING(5):游戏应用,适用于游戏开黑场景,如吃鸡 |
API 时序图
下图展示使用设置音频属性的 API 调用时序:
参数搭配
你可以参考下图,根据应用场景对音质的不同需求,选择不同的参数搭配。
参数 | 场景需求 | 选项 |
---|---|---|
profile | 高音质 | |
有一定音质要求 | ||
对音质无要求 | ||
scenario | 音质/音效优先 | GAME_STREAMING |
频繁上下麦 | CHATROOM_ENTERTAINMENT | |
支持外放设备 | SHOWROOM | |
开黑少杂音 | CHATROOM_GAMING | |
传输质量稳定 | DEFAULT |
也可以根据下表中提供的场景,直接选择参数进行搭配。
场景 | profile | scenario | 特性 |
---|---|---|---|
1 v 1 小班课 | DEFAULT | DEFAULT | 传输流畅、音质高清,优先保证通话质量 |
游戏开黑 | SPEECH_STANDARD | CHATROOM_GAMING | 只保留语音,非语音部分(键盘声、外放音乐等)不会被传输。节省码率的同时减少杂音,适合多人团战 |
狼人杀 | MUSIC_STANDARD | CHATROOM_ENTERTAINMENT | 优秀的音乐编解码技术,提供更为丰富的声音呈现。上下麦没有音量、音质变化 |
K 歌达人 | MUSIC_HIGH_QUALITY | GAME_STREAMING | 高音质搭配丰富音效,适用于对音质要求高的场景 |
语音电台 | MUSIC_HIGH_QUALITY_STEREO | SHOWROOM | 高音质,立体声,支持专业外放设备 |
音乐教学 | MUSIC_STANDARD_STEREO | GAME_STREAMING | 优先保证音质。适用于外放音效也能直播出去的场景 |
双师课堂 | MUSIC_STANDARD_STEREO | CHATROOM_ENTERTAINMENT | 保证音质的同时,呈现更丰富的声音效果。上下麦没有音量、音质变化 |
示例代码
// swift
// 开黑聊天室
rtcKit.setAudioProfile(.speechStandard, scenario: .chatRoomGaming)
// 娱乐聊天室
rtcKit.setAudioProfile(.musicStandard, scenario: .chatRoomEntertainment)
// K 歌房
rtcKit.setAudioProfile(.musicHighQuality, scenario: .chatRoomEntertainment)
// FM 超高音质
rtcKit.setAudioProfile(.musicHighQuality, scenario: .gameStreaming)
// objective-c
// 开黑聊天室
[rtcKit setAudioProfile: ARAudioProfileSpeechStandard scenario: ARAudioScenarioChatRoomGaming];
// 娱乐聊天室
[rtcKit setAudioProfile: ARAudioProfilemusicStandard, scenario: ARAudioScenarioChatRoomEntertainment];
// K 歌房
[rtcKit setAudioProfile: ARAudioProfileMusicHighQuality, scenario: ARAudioScenarioChatRoomEntertainment];
// FM 超高音质
[rtcKit setAudioProfile: ARAudioProfilemusicHighQuality, scenario: ARAudioScenarioGameStreaming]
API 参考
开发注意事项
该方法需要在 joinChannelByToken之前调用。
不同的 Audio scenario 下,设备的系统音量是不同的。
系统音量分通话音量和媒体音量两种:
- 通话音量:进行语音、视频通话时的音量。通话音量有较好的回声消除。
- 媒体音量:播放音乐、视频或游戏的音效、背景音的音量。媒体音量有较好的声音表现力。
两者的差异在于媒体音量可以调整到 0,而通话音量不可以。
SDK 在 setAudioProfile 中提供 6 种不同的 Audio scenario,其中不同的 Audio scenario 使用的音量不同。如果需要将音量调整到 0,建议使用媒体音量控制的 Audio scenario。
Audio scenario | 音量 |
---|---|
GAME_STREAMING | 媒体音量 |
DEFAULT | |
EDUCATION | |
SHOWROOM | |
CHATROOM_ENTERTAINMENT | 通话音量 |
CHATROOM_GAMING | 通话音量 |