不同的 app 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 app 中设置合适的音频编码属性和应用场景。
SDK 默认使用 AgoraAudioProfileDefault 编码属性和 AgoraAudioScenarioHighDefault 应用场景。如果默认设置无法满足你的需求,调用如下 API 设置音频编码属性和应用场景。
| API | 描述 | 
|---|---|
| sharedEngineWithConfig(config.audioScenario) | 在创建 AgoraRtcEngineKit实例时,设置音频应用场景。默认值为AgoraAudioScenarioHighDefault。 | 
| setAudioProfile(profile) | 在加入频道前后均可设置音频编码属性。 | 
| setAudioScenario | 在加入频道前后均可设置音频应用场景。 | 
在实现设置音频编码属性和应用场景前,请确保已在你的项目中实现基本的实时音视频功能。详见《实现视频通话》或《实现互动直播》。
本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你项目的 ViewController.swift 文件中。
AgoraAudioScenarioChatRoom 音频应用场景仅适用于 iOS。1 对 1 互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码:
// Swift
// 在创建 AgoraRtcEngineKit 实例时,设置音频应用场景
var scenario:AgoraAudioScenario = .default
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频编码属性
var profile:AgoraAudioProfile = .default
agoraKit.setAudioProfile(audioProfile)该场景主要要求传输人声、无杂音、节省码率。声网推荐如下设置:
// Swift
// 在创建 AgoraRtcEngineKit 实例时,设置音频应用场景
var scenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频编码属性
var profile:AgoraAudioProfile = .speechStandard
agoraKit.setAudioProfile(audioProfile)该场景主要要求声音表现力好,上下麦时无音量、音质变化。声网推荐如下设置:
// Swift
// 在创建 AgoraRtcEngineKit 实例时,设置音频应用场景
var scenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandard
agoraKit.setAudioProfile(audioProfile)KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码:
// Swift
// 在创建 AgoraRtcEngineKit 实例时,设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频编码属性
var profile:AgoraAudioProfile = .musicHighQuality
agoraKit.setAudioProfile(audioProfile)语音电台一般会使用专业的音频设备,主要要求高音质和立体声。在你的项目中添加如下代码:
// Swift
// 在创建 AgoraRtcEngineKit 实例时,设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频编码属性
var profile:AgoraAudioProfile = .musicHighqQalityStereo
agoraKit.setAudioProfile(audioProfile)该场景主要要求高音质,支持将扬声器播放的音效传输到远端。声网推荐如下设置:
// Swift
// 在创建 AgoraRtcEngineKit 实例时,设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandardStereo
agoraKit.setAudioProfile(audioProfile)该场景主要要求高音质,呈现丰富的声音效果,上下麦时无音量、音质变化。声网推荐如下设置:
// Swift
// 在创建 AgoraRtcEngineKit 实例时,设置音频应用场景
var audioScenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandardStereo
agoraKit.setAudioProfile(audioProfile)本节提供在实现设置音频编码属性和应用场景时可能需要的文档。
声网在 GitHub 上提供已实现设置音频编码属性和应用场景功能的开源示例项目。你可以下载体验并参考源代码。
在 iOS 上,音频应用场景会影响音量类型。不同音量类型直接的区别如下:
下表展示不同音频应用场景、用户角色、音频路由下 SDK 使用的音量类型。
在 AgoraAudioScenarioDefault音频应用场景下:
| 有线耳机 | 扬声器或听筒 | 蓝牙耳机 | |
|---|---|---|---|
| 多主播(直播场景)或用户(通信场景) | 媒体音量 | 通话音量 | 通话音量 | 
| 单主播(直播场景) | 媒体音量 | 媒体音量 | 通话音量 | 
| 观众(直播场景) | 媒体音量 | 媒体音量 | 媒体音量 | 
在 AgoraAudioScenarioGameStreaming 或 AgoraAudioScenarioChorus 音频应用场景下:
| 有线耳机 | 扬声器或听筒 | 蓝牙耳机 | |
|---|---|---|---|
| 多主播(直播场景)或用户(通信场景) | 媒体音量 | 媒体音量 | 媒体音量 | 
| 单主播(直播场景) | 媒体音量 | 媒体音量 | 媒体音量 | 
| 观众(直播场景) | 媒体音量 | 媒体音量 | 媒体音量 | 
在 AgoraAudioScenarioChatRoom 音频应用场景下:
| 有线耳机 | 扬声器或听筒 | 蓝牙耳机 | |
|---|---|---|---|
| 多主播(直播场景)或用户(通信场景) | 媒体音量 | 通话音量 | 通话音量 | 
| 单主播(直播场景) | 媒体音量 | 通话音量 | 通话音量 | 
| 观众(直播场景) | 媒体音量 | 通话音量 | 通话音量 |