调整通话音量
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作,你需要先了解以下与通话音量相关的基础概念:
- 采集是指音频信号经由采集设备采集后,传输到发送端的过程。
- 播放是指音频信号从接收端传输到播放设备后,通过播放设备进行播放的过程。
- 耳返是指将采集到的音频信号实时回传并通过耳机播放的过程。
技术原理
声网 SDK 支持对 SDK 采集和播放的音频音量进行调整,以满足用户实际应用场景。例如,进行双人通话时,需要静音远端用户,可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程:
- ①:调用
adjustRecordingSignalVolume
调节音频采集信号音量。 - ②:调用
setInEarMonitoringVolume
设置耳返音量。 - ③:调用
adjustUserPlaybackSignalVolume
调节本地播放的指定远端用户信号音量。 - ④:调用
adjustPlaybackSignalVolume
调节本地播放的所有远端用户信号音量。
如果使用调整信号音量的方法将音量设置过大,在某些设备上可能会出现音频失真。
前提条件
在实现调整通话音量前,请确保已在你的项目中实现基本的实时音视频功能。详见实现音视频互动。
实现方法
调整播放音量
-
调用
setDeviceVolume
调整播放设备音量。volume
的值与 macOS 系统中音频设备属性里的值是一一对应的,255 对应下图中喇叭/耳机的音量值调到最右。- Objective-C
- Swift
Objective-C// 调整播放设备音量为 50
[agoraKit setDeviceVolume: AgoraMediaDeviceTypeAudioPlayout volume: 50];Swift// 调整播放设备音量为 50
agoraKit.setDeviceVolume(.audioPlayout, volume: 50) -
调用
adjustPlaybackSignalVolume
或adjustUserPlaybackSignalVolume
调整音频播放信号的音量。- Objective-C
- Swift
Objective-C// 设置本地播放的所有远端用户音量
[agoraKit adjustPlaybackSignalVolume: 50];
// 设置本地播放的指定远端用户的音量
[agoraKit adjustUserPlaybackSignalVolume: uid, volume: 50];Swift// 设置本地播放的所有远端用户音量
agoraKit.adjustPlaybackSignalVolume(50)
// 设置本地播放的指定远端用户的音量
agoraKit.adjustUserPlaybackSignalVolume(uid, volume: 50)
获取用户音量(回调)
在音频采集、混音、播放的整个过程中,你都可以通过 reportAudioVolumeIndicationOfSpeakers
回调获取频道内瞬时音量最高的三个用户(即说话者)的用户 ID 及他们的音量。返回的 uid
为 0 表示本地用户。
你需要开启 enableAudioVolumeIndication
方法才能收到该回调。
- Objective-C
- Swift
// 获取瞬时说话音量最高的三个用户(即说话者)的用户 ID、他们的音量及本地用户是否在说话
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine reportAudioVolumeIndicationOfSpeakers:(NSArray<AgoraRtcAudioVolumeInfo*> *_Nonnull) speakers totalVolume:(NSInteger)totalVolume {
}
// 获取瞬时说话音量最高的三个用户(即说话者)的用户 ID、他们的音量及本地用户是否在说话
func rtcEngine(_ engine: AgoraRtcEngineKit, reportAudioVolumeIndicationOfSpeakers speakers:
[AgoraRtcAudioVolumeInfo], totalVolume: Int) {
}
// 启用用户音量提示
agoraKit.enableAudioVolumeIndication(200, smooth: 3, reportVad: true)
调整采集音量
-
调用
setDeviceVolume
调整采集设备音量。volume
的值与 macOS 系统中音频设备属性里的值是一一对应的,255 对应下图中麦克风阵列的音量值调到最右。- Objective-C
- Swift
Objective-C// 调整采集设备音量为 50
[agoraKit setDeviceVolume: AgoraMediaDeviceTypeAudioRecording volume: 50];Swift// 调整采集设备音量为 50
agoraKit.setDeviceVolume(.audioRecording, volume: 50) -
调用
adjustRecordingSignalVolume
调整音频采集信号的音量。- Objective-C
- Swift
Objective-C// 调整采集信号音量
[agoraKit adjustRecordingSignalVolume: 50];Swift// 调整采集信号音量
agoraKit.adjustRecordingSignalVolume(50)
注意事项
使用采集设备采集音频信号时,SDK 默认使用采集设备音量为 85。音量 0 代表静音,音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低,SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求,你可以通调节麦克风或声卡采集的信号幅度,从而调节采集音量。
参考信息
示例项目
声网提供了调整采集、播放、耳返音量的开源示例项目供你参考,你可以前往下载或查看其中的源代码。
如需调整混音或音效文件的播放音量,可以参考以下示例项目。
参考文档
实现调整通话音量过程中,你还可以参考如下文档: