音频设备管理
功能描述
在音频场景中,用户需要根据实际的场地情况选择采用音频的采集和播放设备。NERTC SDK在不同平台上提供了音频设备切换选择。
Android
实现方法
参考如下步骤,在你的项目中进行音频路由的切换:
- 在加入频道成功后调用
isSpeakerphoneOn
来判断当前是听筒还是扬声器模式。 - 调用
setSpeakerphoneOn(boolean enable)
接口进行切换,true: 扬声器 false: 听筒。 - 通过监听
onAudioDeviceChanged
回调来感知音频路由的切换。
示例代码
// 判断当前音频路由器。
boolean isSpeakerphoneOn = NERtcEx.getInstance().isSpeakerphoneOn();
// 设置音频路由。
NERtcEx.getInstance().setSpeakerphoneOn(isSpeakerphoneOn);
// 音频路由切换回调。
public void onAudioDeviceChanged(int selected) {
String audioDevice;
switch (selected) {
case NERtcConstants.AudioDevice.EARPIECE:
audioDevice = "听筒";
break;
case NERtcConstants.AudioDevice.BLUETOOTH_HEADSET:
audioDevice = "蓝牙耳机";
break;
case NERtcConstants.AudioDevice.SPEAKER_PHONE:
audioDevice = "扬声器";
break;
case NERtcConstants.AudioDevice.WIRED_HEADSET:
audioDevice = "有线耳机";
break;
default:
audioDevice = "EARPIECE";
break;
}
}
API参考
事件 | 功能描述 |
---|---|
setPlayoutDeviceMute | 设置是否音频播放静音 |
setRecordDeviceMute | 设置是否音频采集静音 |
isSpeakerphoneOn | 获取扬声器是否开启 |
setSpeakerphoneOn | 设置扬声器是否开启 |
音频设备回调:
事件 | 功能描述 |
---|---|
onAudioDeviceChanged | 语音播放设备发生改变 |
开发注意事项
- 耳机连接时,默认使用耳机播放,此时设置setSpeakerOn 还是从耳机播放
iOS
在音频场景中,用户需要根据实际的场地情况选择采用听筒或者扬声器进行会议通话。 NERTC SDK 在移动平台提供了听筒和者扬声器之间的切换选择。
实现方法
参考如下步骤,在你的项目中进行音频路由的切换:
- 在加入频道成功后调用
getLoudspeakerMode:(bool *)enabled
来判断当前是听筒还是扬声器模式。 - 调用
setLoudspeakerMode:(bool)enable
接口进行切换,true: 扬声器 false: 听筒。 - 通过监听
onNERtcEngineAudioDeviceRoutingDidChange
delegate回调来感知音频路由的切换。
示例代码
// 判断当前音频路由器。
bool enabled = false;
[self.engine getLoudspeakerMode:(&enabled)];
// 设置音频路由。
bool enableSpeakerMode = true;
int result = [self.engine setLoudspeakerMode: enableSpeakerMode];
- (void)onNERtcEngineAudioDeviceRoutingDidChange:(NERtcAudioOutputRouting)routing {
NSString *currentAudioDevice;
switch (routing) {
case kNERtcAudioOutputRoutingHeadset:
currentAudioDevice = @"耳机";
break;
case kNERtcAudioOutputRoutingEarpiece:
currentAudioDevice = @"耳返";
break;
case kNERtcAudioOutputRoutingLoudspeaker:
currentAudioDevice = @"扬声器";
break;
case kNERtcAudioOutputRoutingBluetooth:
currentAudioDevice = @"蓝牙耳机";
default:
currentAudioDevice = @"Default";
break;
}
}
API参考
事件 | 功能描述 |
---|---|
setPlayoutDeviceMute | 设置音频播放设备的状态 |
getPlayoutDeviceMute | 获取音频播放设备的状态 |
setRecordDeviceMute | 设置录音设备的状态 |
getRecordDeviceMute | 获取录音设备的状态 |
getLoudspeakerMode | 获取目前是否使用扬声器模式 |
setLoudspeakerMode | 设置音频播放扬声器模式 |
音频设备回调:
事件 | 功能描述 |
---|---|
onNERtcEngineAudioDeviceRoutingDidChange | 音频输出设备改变回调 |
开发注意事项
- 语音通话音频播放模式默认为扬声器模式;
- 在iPad设备上,设置音频播放为扬声器模式会失败,音频播放模式只能使用扬声器模式;
Web
在会议等场景,用户在开始通话前,通常会选择进行音视频设备的选择和检测,以保证进入通话后的音视频体验。 以下说明如何获取音频设备列表,为保证通话或直播质量,我们推荐在进入频道前进行音频设备测试,以检测麦克风等音频设备是否能够正常工作。
实现方法
1、获取具体的设备列表
2、选择开启制定的设备
3、启动选中的设备
示例代码
// 此处以同时启动麦克风与摄像头设备示例
WebRTC2.getDevices().then((devices)=>{
var audioDevices = devices.audioIn; //数组,麦克风设备列表
var videoDevices = devices.video; //数组,摄像头设备列表
var uid = Math.floor(Math.random()*10000);
var selectedMicrophoneId = audioDevices[0];
var selectedCameraId = videoDevices[0];
var localStream = WebRTC2.createStream({
uid: uid,
audio: true,
microphoneId: selectedMicrophoneId, //指定要开启的mic
video: true,
cameraId: selectedCameraId, //指定要开启的camera
screen: false
});
localStream.init().then(()=>{
//用于播放视频的div元素
let div = document.getElementById('local-container')
localStream.play(div)
//设置播放的视频容器大小
localStream.setLocalRenderMode({
width: 180,
height: 150,
cut: true
})
setInterval(function(){
console.log(`获取mic采集的音量: ${localStream.getAudioLevel()}`);
}, 1000);
})
})
API参考
事件 | 功能描述 |
---|---|
getMicrophones | 获取麦克风列表 |
getSpeakers | 获取扬声器列表 |
getDevices | 获取所有设备列表 |
本篇文档内容是否对您有帮助?


此文档对你是否有帮助
×


×