使用webrtc中的MediaDevices.getUserMedia()切换摄像头

时间:2016-11-30 14:33:34

标签: android camera webrtc mozilla getusermedia

我正在尝试使用navigator.MediaDevices.getUserMedia()webrtc在通话期间切换设备摄像头。这个功能在桌面浏览器上工作正常,但在mozilla android上它无法正常工作。 这是我正在使用的代码。

var front=false;

var myConstraints = {  video: { facingMode: (front? "user" : "environment")} }; 
navigator.mediaDevices.getUserMedia(myConstraints).then(function(stream) {

}

关于这个的任何想法??

3 个答案:

答案 0 :(得分:4)

手机硬件通常不允许同时打开前置和后置摄像头。在获取另一台摄像机之前,将代码更改为stop()现有流。

有关工作示例,请参阅my answer to a similar question

答案 1 :(得分:2)

使用最新版本的adapter.js并查看NotReadableerror是否正在发生,似乎Chrome for android无法通过使用stream.getVideoTracks()[0] .stop();来释放前置摄像头硬件以切换到后置。我认为这可能是一个错误

答案 2 :(得分:1)

Webcam.set({
        width: 490,
        height: 450,
        image_format: 'jpeg',
        jpeg_quality: 90,
        constraints: {
                    facingMode: {
                                  exact: 'environment'
                                  }

                }   
    });

此代码适用于所有浏览器。

constraints: {facingMode: { exact: 'environment' }} 

以上行负责打开后置摄像头,设置约束:null表示打开后置摄像头。您还可以通过实现“切换摄像头”按钮方法来调整此代码