音视频和纯音频通话中,获取通话音量可以实现多种有用的功能,例如:
动态展示通话音量条
识别当前活跃的发言用户
提醒用户是否在发言时忘记开启麦克风
当你希望调整通话音量时,除了通过操作系统进行设置外,也可以通过调用 SDK 接口,分别设置采集、播放或混音音量。
混音音量调节详见使用混音功能。
你可以通过调用 enableAudioPropertiesReport
方法,设置音量回调周期,单位为毫秒,然后在 onLocalAudioPropertiesReport
和 onRemoteAudioPropertiesReport
回调中分别获取用户及对应的音量信息。
音量值对应的音量档位详见 API 文档。
// 启用音频信息提示 - (void)enableAudioPropertiesReport { ByteRTCAudioPropertiesConfig *audioPropertiesConfig = [[ByteRTCAudioPropertiesConfig alloc] init]; audioPropertiesConfig.interval = 300; [self.rtcVideo enableAudioPropertiesReport:audioPropertiesConfig]; } /** * 回调获取本地麦克风和屏幕音频流采集的音频信息 * @param engine ByteRTCVideo 对象 * @param audioPropertiesInfos 本地音频信息,详见 LocalAudioPropertiesInfo */ - (void)rtcEngine:(ByteRTCVideo *)engine onLocalAudioPropertiesReport:(NSArray<ByteRTCLocalAudioPropertiesInfo *> *)audioPropertiesInfos { // 本地用户音量回调 } /** * 回调获取订阅的远端用户的音频信息 * @param engine ByteRTCVideo 对象 * @param audioPropertiesInfos 远端音频信息,其中包含音频流属性、房间 ID、用户 ID ,详见 ByteRTCRemoteAudioPropertiesInfo * @param totalRemoteVolume 订阅的所有远端流混音后的总音量,范围是 [0,255] */ - (void)rtcEngine:(ByteRTCVideo *)engine onRemoteAudioPropertiesReport:(NSArray<ByteRTCRemoteAudioPropertiesInfo *> *)audioPropertiesInfos totalRemoteVolume:(NSInteger)totalRemoteVolume { // 远端用户音量回调 } /** * 回调获取房间内的最活跃用户信息 * @param engine ByteRTCVideo 对象 * @param roomId 房间 ID * @param uid 最活跃用户(ActiveSpeaker)的用户 ID */ - (void)rtcEngine:(ByteRTCVideo *)engine onActiveSpeaker:(NSString *)roomId uid:(NSString *)uid { // 房间内的最活跃用户信息 }
采集是指音频输入设备,例如麦克风,采集到声音数据并存储到本地的过程。
你可以通过调用 setCaptureVolume
方法,实现音量参数调整。
该方法中 volume
参数表示录音信号的音量,取值范围为 [0,400]:
0:静音
100:原始音量,不对音频信号幅度进行缩放
400: 最大可为原始音量的 4 倍
[self.rtcVideo setCaptureVolume:ByteRTCStreamIndexMain volume:120];
Android | iOS | macOS | Windows | Linux | Electron | Flutter | Unity | Web | |
---|---|---|---|---|---|---|---|---|---|
采集音量 | setCaptureVolume | setCaptureVolume:volume: | setCaptureVolume:volume: | setCaptureVolume | setCaptureVolume | setCaptureVolume | setCaptureVolume | SetCaptureVolume | setCaptureVolume |
播放指客户端接收到远端音视频文件,并通过本地播放设备播放的过程。
所有远端用户音量:你可以通过调用 setPlaybackVolume
方法,实现远端所有用户混音后在本地播放的音量。
指定远端用户音量:你可以通过调用 setRemoteAudioPlaybackVolume
方法,实现指定远端用户在本地播放的音量。
当你需要分别调整多个远端用户在本地播放的音量时,多次调用 setRemoteAudioPlaybackVolume
方法,并传入不同的 uid
和 volume
参数。
当你需要多次调整同一个远端用户在本地播放的音量时,多次调用 setRemoteAudioPlaybackVolume
方法,并传入同一个 uid
和不同的 volume
参数。
int volume = 120; NSString *uid = @""; NSString *roomId = @""; [self.rtcVideo setPlaybackVolume:volume]; [self.rtcVideo setRemoteAudioPlaybackVolume:roomId remoteUid:uid playVolume:volume];
Q: Android 端调用 enableAudioPropertiesReport
成功后,收不到本端的音量回调。
A: RTC SDK 内部采用弱引用持有回调实例,需要自行管理回调实例的生命周期。例如:不能用局部内部类形式创建,必须以成员内部类的形式创建。
getAudioVolume
方法随时获取采集音频音量。