1

大约一个月前,Stackoverflow 的一位合作伙伴帮我解决了一个大问题,比如在会议期间更换摄像头和麦克风。该问题已在以下链接中得到解答:

使用 WebRTC 如何选择麦克风和摄像头?

更换摄像头和麦克风后,之前的媒体流仍然处于活动状态。所以会议中的其他人无法以某种方式接收到我的新流量。

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

我在项目中用于 webRTC 实现的库是“simplewebRTC”,目前已停用。

我用来更改设备的代码完全基于我在上一个问题中取得的成果......

4

1 回答 1

1

我不知道 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));

这应该会立即导致发件人切换到从您的新相机和麦克风发送媒体。对方不知道有什么区别。

于 2019-03-29T00:02:45.007 回答