音频设备管理

更新时间: 2024/09/18 16:26:13

在音频场景中,您可能需要根据实际的场地情况选择采用音频的采集和播放设备,例如在室内场景中选用听筒进行音频播放。NERTC SDK 支持自由切换音频设备。

初始化时指定音频采集设备

  1. 通过 getDevices 获取设备列表。

  2. 选择开启指定的设备。

  3. 启动选中的设备。

js// 此处以同时启动麦克风与摄像头设备示例
NERTC.getDevices().then((devices)=>{

  var audioDevices = devices.audioIn;  //数组,麦克风设备列表
  var videoDevices = devices.video;  //数组,摄像头设备列表

  var uid = Math.floor(Math.random()*10000);
  var selectedMicrophoneId = audioDevices[0].deviceId;
  var selectedCameraId = videoDevices[0].deviceId;
  var localStream = NERTC.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);
  })
})

切换音频采集设备

在初始化本地音频流之后,动态切换音频采集设备

js//rtc.localStream.init()后
rtc.localStream
  .switchDevice('audio', microphoneId) //设备的 ID,可以通过 getDevices 方法获取
  .then(() => {
    console.warn('切换mic成功')
  })
  .catch((err) => {
     console.warn('切换mic失败: ', err)
  })

指定音频播放设备

在通话时切换扬声器。在播放订阅流之前或之后都可以调用该方法

js//在播放订阅流之前调用
const audioOutputDevice = (await NERTC.getSpeakers())[0]
console.log("设置扬声器为", audioOutputDevice.label, audioOutputDevice.deviceId)
rtc.client.on('stream-subscribed', (evt) => {
  var remoteStream = evt.stream
  console.warn('订阅别人的流成功的通知: ', remoteStream.streamID, 'mediaType: ', evt.mediaType)
  remoteStream.setAudioOutput(audioOutputDevice.deviceId)
  remoteStream.play(view, playOptions)
})

//在播放订阅流之后调用
await remoteStream.play(view, playOptions)
remoteStream.setAudioOutput(deviceId)

API参考

方法 功能描述
getMicrophones 获取麦克风列表
getSpeakers 获取扬声器列表
getDevices 获取所有设备列表
此文档是否对你有帮助?
有帮助
去反馈
  • 初始化时指定音频采集设备
  • 切换音频采集设备
  • 指定音频播放设备
  • API参考