监测发言者音量
功能描述
NERTC SDK 提供监听房间里所有成员的发送音量值的功能。
在一些语音连麦场景或者视频会议场景,开发者应用层常常需要了解到发言者的音量,从而做出UI上的音量展示或者根据发言者的音量大小进行视图布局的动态调整。
Android
实现方法
调用接口 enableAudioVolumeIndication,启用说话者音量提示。 该方法允许 SDK 定期向 App 反馈当前谁在说话以及说话者的音量;
代理方法 onLocalAudioVolumeIndication: 提示频道内本地用户瞬时音量的回调;
代理方法 onRemoteAudioVolumeIndication: 提示频道内谁正在说话及说话者音量的回调;
示例代码
boolean enableActiveSpeaker = true;
NERtcEx.getInstance().enableAudioVolumeIndication(enableActiveSpeaker, 500);
public class ChatActivity implements NERtcCallbackEx {
......
@Override
public void onLocalAudioVolumeIndication(int volume) {
if (volume > 0) {
mUserSelf.speakerView.setText("正在说话: " + volume);
} else {
mUserSelf.speakerView.setText("");
}
}
@Override
public void onRemoteAudioVolumeIndication(NERtcAudioVolumeInfo[] volumeArray, int totalVolume) {
for (int i = 0, len = mRemoteUserMap.size(); i < len; i++) {
MultiChatUser user = mRemoteUserMap.valueAt(i);
if (user.speakerView != null) {
user.speakerView.setText("");
}
}
if (volumeArray == null) {
return;
}
for (NERtcAudioVolumeInfo volumeInfo : volumeArray) {
MultiChatUser user = mRemoteUserMap.get(volumeInfo.uid);
if (user != null) {
String text = String.format(Locale.CHINA, "正在说话: %d", volumeInfo.volume);
user.speakerView.setText(text);
user.volume = volumeInfo.volume;
}
}
}
}
API参考
方法 | 功能描述 |
---|---|
enableAudioVolumeIndication | 启用说话者音量提示 |
事件 | 事件描述 |
---|---|
onRemoteAudioVolumeIndication | 提示频道内谁正在说话及说话者瞬时音量的回调 |
onLocalAudioVolumeIndication | 本地用户瞬时音量的回调 |
iOS
实现方法
- 开始前请确保你已完成环境准备、安装包获取等步骤;
- 调用接口
enableAudioVolumeIndication:interval:
启用说话者音量提示。该方法允许 SDK 定期向 App 反馈当前谁在说话以及说话者的音量; - 代理方法
onLocalAudioVolumeIndication:
提示频道内本地用户瞬时音量的回调; - 代理方法
onRemoteAudioVolumeIndication: totalVolume:
提示频道内谁正在说话及说话者音量的回调;
示例代码
NERtcEngineContext *context = [[NERtcEngineContext alloc] init];
context.appKey = "<#请输入您的AppKey#>";
context.engineDelegate = self;
NERtcEngine *coreEngine = [NERtcEngine sharedEngine];
[coreEngine setupEngineWithContext:context];
[coreEngine enableAudioVolumeIndication:YES interval:1000]; // 启用说话者音量提示,在 onRemoteAudioVolumeIndication 和 onRemoteAudioVolumeIndication 回调中每隔1000ms返回音量提示
/*
在代理文件中实现下述方法
*/
- (void)onLocalAudioVolumeIndication:(int)volume
{
// 提示频道内本地用户瞬时音量的回调
}
-(void)onRemoteAudioVolumeIndication:(nullable NSArray<NERtcAudioVolumeInfo*> *)speakers totalVolume:(int)totalVolume
{
// 提示频道内谁正在说话及说话者音量的回调
}
API参考
方法 | 功能描述 |
---|---|
enableAudioVolumeIndication | 启用说话者音量提示 |
事件 | 事件描述 |
---|---|
onRemoteAudioVolumeIndication | 提示频道内谁正在说话及说话者音量的回调 |
onLocalAudioVolumeIndication | 本地用户瞬时音量的回调 |
Windows/macOS
实现方法
- 开始前请确保你已完成环境准备、安装包获取等步骤;
- 调用接口
enableAudioVolumeIndication
启用说话者音量提示。该方法允许 SDK 定期向 App 反馈当前谁在说话以及说话者的音量; - 代理方法
onLocalAudioVolumeIndication
提示频道内本地用户瞬时音量的回调; - 代理方法
onRemoteAudioVolumeIndication
提示频道内谁正在说话及说话者音量的回调;
示例代码
rtc_engine_->enableAudioVolumeIndication(enable, 200);
void onLocalAudioVolumeIndication(int volume)
{
printf("AudioVolume: volume: %d\n", volume);
}
void onRemoteAudioVolumeIndication(const NERtcAudioVolumeInfo *speakers, unsigned int speaker_number, int total_volume)
{
for (unsigned int i = 0; i < speaker_number; i++)
{
nertc::NERtcAudioVolumeInfo stats = speakers[i];
printf("uid:%lld, AudioVolume: volume: %d\n",
stats.uid, stats.volume);
}
}
API参考
方法 | 功能描述 |
---|---|
enableAudioVolumeIndication | 启用说话者音量提示 |
事件 | 事件描述 |
---|---|
onRemoteAudioVolumeIndication | 提示频道内谁正在说话及说话者音量的回调 |
onLocalAudioVolumeIndication | 本地用户瞬时音量的回调 |
Web
实现方法
- 监听
volume-indicator
事件, 反馈当前监听房间中所有人说话的音量; - 监听
active-speaker
事件, 监听房间中音量最大的人; - 方法
getAudioLevel
,获取获取本端麦克风的采集音量;
示例代码
监听房间中谁在讲话
可以监听房间中谁在讲话,音量最大的那个人。
client.on('active-speaker', _data => {
console.log('"===== 当前在讲话的人:", _data.uid')
})
监听房间中所有人的音量
可以获取房间中所有人的音量
rtc.client.on('volume-indicator', _data => {
console.log("===== 正在说话的远端用户及其音量:", _data)
let status = null
stats.forEach(item => {
status = 'uid: ' + item.uid + ', 音量:' + item.level
console.log(status)
})
})
获取本端麦克风的采集音量
该方法用于获取当前麦克风实时采集的音量
localStream.getAudioLevel()
API参考
方法 | 功能描述 |
---|---|
setAudioVolume | 设置音频播放的音量 |
setCaptureVolume | 设置麦克风采集的音量 |
getAudioLevel | 获取当前麦克风采集音量 |
本篇文档内容是否对您有帮助?


此文档对你是否有帮助
×


×