设置通话音量
更新时间: 2022/10/31 11:39:51
本文介绍如何通过 NERoom SDK 静音或取消静音、设置通话音量。
前提条件
您需要先调用 joinRoom
方法加入 NERoom 的房间,并且此房间开启了 RTC 房间的配置,即在创建房间时,已在NECreateRoomOptions
方法中,设置enableRtc
参数为 true,具体操作方法请参见创建房间。
打开或关闭本地音频
技术原理
配置步骤
-
调用
getRoomContext
方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 -
打开或关闭本地音频。
- 调用
muteMyAudio
方法关闭本地音频采集。 - 调用
unmuteMyAudio
方法开启本地音频采集。
- 调用
示例代码
实现关闭本地音频
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
context->getRtcController()->muteMyAudio([this](int code, const std::string& msg){
});
}
实现打开本地音频
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
context->getRtcController()->unmuteMyAudio([this](int code, const std::string& msg){
});
}
静音本地音频采集设备
技术原理
该接口只是将采集的麦克风声音静音,远端用户还能听到伴音。
实现方法
-
调用
getRoomContext
方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 -
加入房间后,调用
setRecordDeviceMute
方法静音或取消静音采集的麦克风声音。- true:静音。
- false:取消静音
示例代码
m_pRoomKit->getRoomService()->getPreviewRoomContext()->getPreviewRoomRtcController()->setRecordDeviceMute(true);
设置本地采集音量
在 K 歌和语聊房等场景中,用户往往需要调整通话音量,您可以通过设置采集音量实现该功能。
除此之外,NERoom 也支持通过监听回调的方式获取房间内成员的音量。在一些语音连麦场景或者视频会议场景中,产品应用层常常需要获取发言者的音量,并通过 UI 进行音量展示,或者根据发言者的音量大小进行视图布局的动态调整。详细信息请参考监测发言者音量。
技术原理
NERoom 通过录音设备采集房间内成员的音频信号,将其录制下来以后播放给远端用户收听。
实现方法
-
调用
getRoomContext
方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 -
在加入房间前或加入房间后,调用
adjustRecordingSignalVolume
方法设置录制声音的信号幅度,从而达到调节采集音量的目的。该方法通过
volume
参数设置录音信号的音量,取值范围为 0 ~ 400:- 0: 静音。
- 100: (默认值)原始音量,即不对信号做缩放。
- 400: 原始音量的 4 倍,即把信号放大到原始信号的 4 倍。
建议设置采集音量时使用默认值(100)或小于该值,否则可能会导致音质问题。
示例代码
int volume = 100;
m_pRoomKit->getRoomService()->getPreviewRoomContext()->getPreviewRoomRtcController()->adjustRecordingSignalVolume(volume);
静音或取消静音房间其他成员
您可以在云信控制台上配置某角色是否具备静音房间其他成员的权限,只有具备该权限的角色才可以执行此操作。
配置步骤
-
加入房间后,调用
getRoomContext
方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 -
静音或取消静音房间其他成员。
- 调用
muteMemberAudio
方法静音房间中的某个成员。 - 调用
unmuteMemberAudio
方法取消静音房间中的某个成员。
一次只能传入一个成员的 uuid。
- 调用
示例代码
静音房间其他成员的示例代码如下:
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
std::string userUuid = "123456";
context->getRtcController()->muteMemberAudio(userUuid, [this](int code, const std::string& msg) {
});
}
取消静音房间其他成员的示例代码如下:
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
std::string userUuid = "123456";
context->getRtcController()->unmuteMemberAudio(userUuid, [this](int code, const std::string& msg) {
});
}
调节音量的接口对比
接口名称 |
描述 |
适用场景 |
---|---|---|
muteMyAudio、 unmuteMyAudio | 开启或关闭本地音频采集和发送 | 适用于简单的音频开关场景。静音后,SDK 所有声音都不会播放。如果在有伴音的场景中,调用该接口会同时关闭伴音的采集和发送 |
setRecordDeviceMute | 静音音频采集设备 | 适用于麦克风采集和伴音同时开启时,只发送伴音音频的场景 |
adjustRecordingSignalVolume | 调节采集信号音量 | 适用于需要精确调整本地音频采集(包括外部输入)音量的场景,比如 KTV、语聊房 |
API 参考
方法 | 功能描述 |
---|---|
muteMyAudio |
关闭本地音频采集。 |
unmuteMyAudio |
开启本地音频采集。 |
muteMemberAudio |
静音房间中的某个成员。 |
unmuteMemberAudio |
取消静音房间中的某个成员。 |
setRecordDeviceMute |
静音或取消静音采集的麦克风声音。 |
adjustRecordingSignalVolume |
调节采集的音量。 |