更换摄像头和麦克风后如何恢复协商?

时间:2019-03-28 14:31:05

标签: javascript angularjs webrtc simplewebrtc

大约一个月前,Stackoverflow的合作伙伴向我提出了一个大问题,例如在会议期间更换摄像头和麦克风。在以下链接中回答了该问题:

Using WebRTC how to choose mic and camera?

更换相机和麦克风后,先前的媒体流保持活动状态。因此,会议中的其他人无法以某种方式接收到我的新流程。

如有必要,我想知道如何重新协商这一新流程。

我在项目中用于webRTC实施的库是目前正在停用的“ simplewebRTC”。

我用于更换设备的代码完全基于我上一个问题中实现的目标...

1 个答案:

答案 0 :(得分:0)

我不了解simpleWebRTC,但简单地说,WebRTC不需要重新协商。

只需使用sender.replaceTrack()。它是异步的,因此要同时切换摄像头和麦克风:

navigator.mediaDevices.getUserMedia(constraints) 
  .then(stream => {
    video.srcObject = stream;
    return Promise.all(stream.getTracks().map(track => {
      const sender = pc.getSenders().find((s => s.track.kind == track.kind);
      return sender.replaceTrack(track);
    }));
  })
  .catch(err => console.log(err));

这应该立即导致发送者切换为从新的相机和麦克风发送媒体。另一端不知道区别。