【问题标题】:switch camera during call peer js webrtc?在呼叫对等js webrtc期间切换相机?
【发布时间】:2020-06-23 07:38:35
【问题描述】:

我们正在使用 peer js webrtc 进行视频通话。一切正常,只是问题是我无法在通话期间切换摄像头。我做了一些工作,可以在通话期间在本地切换摄像头,但对偏远地区没有影响。

这是我的代码

$('select').on('change', function (e) {
    navigator.mediaDevices.enumerateDevices().then(function (devices) {
     
        var valueSelected = $("#myselect option:selected").val();
        alert(valueSelected);
        //var myselect = 0;

        if (valueSelected == "0") {
            var cameras = [];
            devices.forEach(function (device) {
                'videoinput' === device.kind && cameras.push(device.deviceId);
            });
            var constraints = { video: { deviceId: { exact: cameras[0] } } };

            navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
             

              
                    window.localStream = stream;
                
                myapp.setMyVideo(window.localStream)
              
                //if (callback)
                //    callback();
            }, function (err) {
                console.log("The following error occurred: " + err.name);
                alert('Unable to call ' + err.name)
            });
        }
        else {
            var cameras = [];
            devices.forEach(function (device) {
                'videoinput' === device.kind && cameras.push(device.deviceId);
            });
            var constraints = { video: { deviceId: { exact: cameras[1] } } };

            navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
              

            
                    window.localStream = stream;
               

                myapp.setMyVideo(window.localStream)
                //if (callback)
                //    callback();
            }, function (err) {
                console.log("The following error occurred: " + err.name);
                alert('Unable to call ' + err.name)
            });
        }
        //var myselect = $("#myselect option:selected").val();

       
    });
});

【问题讨论】:

    标签: webrtc peerjs


    【解决方案1】:

    在建立对等连接时更改流的推荐方法是使用不需要 ICE 重新协商的 replaceTrack 函数: RTCRtpSender.replaceTrack

    文档说:

    在 replaceTrack() 的用例中,通常需要在手机的后置摄像头和前置摄像头之间切换。使用 replaceTrack(),您可以简单地为每个摄像头设置一个跟踪对象,并根据需要在两者之间切换。看例子...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-01
      • 2017-04-14
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多