音视频通话 2.0
Android

设置通话音量

更新时间: 2023/05/17 11:19:17

在音视频通话和互动直播过程中,为了提高产品使用者的体验,NERTC SDK 支持调整各种声音的音量,例如调整 SDK 采集的声音、播放的声音等。音量调节功能适用于多种需要自定义调节音量的场景。

NERTC SDK 也支持通过监听回调的方式获取房间内成员的音量。在一些语音连麦场景或者视频会议场景中,产品应用层常常需要获取发言者的音量,并通过 UI 进行音量展示,或者根据发言者的音量大小进行视图布局的动态调整。详细信息请参考监测发言者音量

此外,本文档将在末尾为您介绍 NERTC SDK 相关音频接口的实现原理和适用场景,具体内容请点击音频主要接口对比查看。

设置采集音量

NERTC SDK 通过录音设备采集房间内成员的音频信号,将其录制下来以后播放给远端用户收听。

技术原理

采集.png

实现方法

调用 adjustRecordingSignalVolume 方法设置录制声音的信号幅度,从而达到调节采集音量的目的。

该方法通过 volume 参数设置录音信号的音量,取值范围为 0 ~ 400:

  • 0: 静音。
  • 100: (默认值)原始音量,即不对信号做缩放。
  • 400: 原始音量的 4 倍,即把信号放大到原始信号的 4 倍。

建议设置采集音量时使用默认值(100)或小于该值,否则可能会导致音质问题。

示例代码如下:

//将采集音量设置为100
NERtcEx.getInstance().adjustRecordingSignalVolume(100);

设置播放音量

在音视频通话过程中,音频信号从发送端进入到接收端,然后使用播放设备进行播放。

技术原理

设置播放音量-移动端.png

实现方法

有三种方法调节播放声音的信号幅度,从而达到调节播放音量的目的。三种方法的区别和适用场景如下表所示。

接口 生效的对象 调用时机
adjustPlaybackSignalVolume 本地播放的所有远端用户的音频流。 本端用户加入房间前后均可调用。
远端用户进入房间之前,就可以控制音量。
adjustUserPlaybackSignalVolume 本地播放的某个远端用户的音频流。 本端用户加入房间后且对应的远端用户进入房间后调用。
adjustChannelPlaybackSignalVolume 某个房间内的所有远端用户的音频流。
在多房间场景中,可以使用该方法单独调整主房间或者某个子房间的所有远端用户的播放音量。
本端用户加入房间前后均可调用。
远端用户进入房间之前,就可以控制音量。

如果您在adjustPlaybackSignalVolumeadjustChannelPlaybackSignalVolumeadjustUserPlaybackSignalVolume 中都设置了音量,实际输出的音量值为 “adjustPlaybackSignalVolume 音量值 × adjustChannelPlaybackSignalVolume 音量值 × adjustUserPlaybackSignalVolume 音量值”。例如 adjustPlaybackSignalVolume 中的音量值设为 100,adjustChannelPlaybackSignalVolume 中的音量值设为 90,adjustUserPlaybackSignalVolume 中的音量值设为70,实际输出音量为“100% × 90% × 70% = 63%”。

  • 调用 adjustPlaybackSignalVolume 方法可以调节本地播放的所有远端用户的音量。

    参数说明如下表所示。

    参数 类型 描述
    volume int 播放音量的百分比,取值范围为 [0,400]。
    • 0:静音。
    • 100:原始音量。
    • 400:原始音量的 4 倍(自带溢出保护)。

    建议设置本地播放音量时使用默认值(100)或小于该值,否则可能会导致音质问题。

    示例代码如下:

    //调整本地播放的所有远端用户的播放音量为50
    NERtcEx.getInstance().adjustPlaybackSignalVolume(50);
    //调整本地播放的所有远端用户的播放音量为0,静音所有用户
    NERtcEx.getInstance().adjustPlaybackSignalVolume(0);
    
  • 调用 adjustUserPlaybackSignalVolume 方法可以调节本地播放的指定远端用户的音量。

    参数说明如下表所示。

    参数 类型 描述
    uid Long 远端用户的 ID。
    volume int 播放音量的百分比,取值范围为 [0,100]。
    • 0:静音。
    • 100:原始音量。

    多次调用该方法,可以设置不同远端用户的播放音量;也可以反复调节某个远端用户的播放音量。

    示例代码如下:

    //调整本地播放的uid为12345的用户的播放音量为50
    NERtcEx.getInstance().adjustUserPlaybackSignalVolume(12345, 50);
    //调整本地播放的uid为12345的用户的播放音量为0,静音该用户。
    NERtcEx.getInstance().adjustUserPlaybackSignalVolume(12345, 0);
    
  • 调用 adjustChannelPlaybackSignalVolume 方法可以调节本地播放的指定房间内所有远端用户的音量。

    参数说明如下表所示。

    参数 类型 描述
    volume int 播放音量的百分比,取值范围为 [0,400]。
    • 0:静音。
    • 100:原始音量。
    • 400:原始音量的 4 倍(自带溢出保护)。
    • 建议设置本地播放音量时使用默认值(100)或小于该值,否则可能会导致音质问题。
    • 如果是调整主房间音量,请调用 NERtcEx 类下面的 adjustChannelPlaybackSignalVolume
    • 如果是调整子房间音量,请调用NERtcChannel类下面的 adjustChannelPlaybackSignalVolume

    示例代码如下:

    //调整本地播放的主房间内所有用户的播放音量为50
    NERtcEx.getInstance().adjustChannelPlaybackSignalVolume(50);
    
    //调整本地播放的子房间1所有用户的播放音量为50
    mRtcChannel.adjustChannelPlaybackSignalVolume(50);
    

设置耳返音量

NERTC SDK 通过录音设备采集房间内成员的音频信号,然后使用播放设备进行播放,实现耳返功能。

技术原理

耳返.png

实现方法

调用 enableEarback 方法开启耳返功能之后,您可以调用 setEarbackVolume 方法设置耳返音量。

示例代码如下:

//将耳返音量设置为100
NERtcEx.getInstance().setEarbackVolume(100);

音频主要接口对比

接口名称
功能及适用场景
实现原理图解
enableLocalAudio 开启或关闭本地音频采集和发送 enablelocalaudio.png
适用于简单的音频开关场景
enableMediaPub 开启或关闭本地媒体流(主流)的发送 enablemediapub.png
适用于单独开启麦克风但不发送音频的场景,比如会议场景、大房间
muteLocalAudioStream 开启或关闭本地音频主流的发送 mutelocalaudio.png
适用于需要频繁静音\取消静音操作的场景
setRecordDeviceMute 静音音频采集设备 setRecordDeviceMute.png
适用于麦克风采集和伴音同时开启时,只发送伴音音频的场景
adjustRecordingSignalVolume 调节采集信号音量 adjustRecordingSignalVolume.png
适用于需要精确调整本地音频采集(包括外部输入)音量的场景,比如 KTV语聊房
此文档是否对你有帮助?
有帮助
去反馈
  • 设置采集音量
  • 技术原理
  • 实现方法
  • 设置播放音量
  • 技术原理
  • 实现方法
  • 设置耳返音量
  • 技术原理
  • 实现方法
  • 音频主要接口对比