Android JavaScript使用JavaScript从前置摄像头切换到后置摄像头

时间:2020-04-10 20:16:54

标签: javascript android google-chrome mobile mediadevices

我无法正确解决此问题,或者甚至无法切换摄像机。

我已经尝试过在第二次调用getUserMedia之前停止视频轨道,希望停止视频轨道会关闭前置摄像头,以便可以打开后置摄像头,但这是行不通的。


var oldStream; // the old stream from getUserMedia

Function SwitchCamera() {

    oldStream.getVideoTracks()[0].stop();

    navigator.mediaDevices.getUserMedia({audio: true, video: {deviceId: 'rear camera device ID'}).then(function(newStream){

        // this never runs

    }).catch(function(err){
        console.log(err); // Cannot connect camera
    });

}

要在移动设备上切换相机,还需要做些其他事情吗?这有可能吗?

1 个答案:

答案 0 :(得分:0)

在移动设备上,我们似乎只需要给照相机足够的时间即可关闭。将getUserMedia包装在setTimeout中并以大约1秒钟(1,000毫秒)的延迟足以完成我的测试,尽管我还将在抛出错误之前尝试连续3次交换相机。我不确定如何甚至是否有可能检查实际设备是否已停止或关闭,但我怀疑由于浏览器安全性的原因,这是不可能的。

在理想世界中,MediaStreamTrack.stop()将返回一个承诺,该承诺为我们提供了有关与该轨道关联的设备是否实际上已停止/关闭或是否由于在其他轨道中使用而仍在运行的信息。