WebRTC - 实时更改 device/camera

WebRTC - Change device/camera in realtime

我在尝试实时更换我的摄像头时遇到问题,它适用于本地视频,但远程人员看不到新摄像头,仍然看到旧摄像头。我试图停止流并再次初始化,但仍然无法正常工作。这只是我的一些代码。 我到处搜索,找不到解决方案。有人可以帮我吗?

function init() {
        getUserMedia(constraints, connect, fail);
}

$(".webcam-devices").on('change', function() {
    var deviceID = this.value;
    constraints.video = {
        optional: [{
            sourceId: deviceID
        }]
    };
    stream.getTracks().forEach(function (track) { track.stop(); });
    init();
});

您需要实际更改您在 PeerConnection 中发送的曲目。在 Firefox 中,您可以使用 RTPSender.replaceTrack(new_track); 进行更改而无需重新协商(现在已将其添加到规范中)。否则,需要将新的stream/track添加到RTCPeerConnection,并移除旧的,然后处理onnegotiationneeded事件并重新协商

查看@jib 的小提琴之一:Jib's replaceTrack() fiddle:

function flip() {
  flipped = 1 - flipped;
  return pc1.getSenders()[0].replaceTrack(streams[flipped].getVideoTracks()[0])
  .then(() => log("Flip! (notice change in dimensions & framerate!)"))
  .catch(failed);
}