Android Chrome 使用 JavaScript 从前置摄像头切换到后置摄像头
Android Chrome Switch from Front to Rear camera using JavaScript
我无法正确解决这个问题,或者是否可以切换相机。
我试过在第二次调用 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
});
}
我还需要做些什么才能在移动设备上切换摄像头吗?这可能吗?
在移动设备上,我们似乎只需要给相机足够的时间来关闭它。将 getUserMedia
包裹在 setTimeout
中并延迟约 1 秒(1,000 毫秒)足以满足我的测试需求,不过我还将尝试连续 3 次更换相机,然后再抛出错误。我不确定如何检查实际设备是否停止或关闭,但我怀疑由于浏览器安全性,这是不可能的。
在一个完美的世界中 MediaStreamTrack.stop()
会 return 一个承诺,向我们提供有关与轨道关联的设备实际上是 stopped/off 还是仍然 运行 因为它被用在其他曲目中。
我无法正确解决这个问题,或者是否可以切换相机。
我试过在第二次调用 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
});
}
我还需要做些什么才能在移动设备上切换摄像头吗?这可能吗?
在移动设备上,我们似乎只需要给相机足够的时间来关闭它。将 getUserMedia
包裹在 setTimeout
中并延迟约 1 秒(1,000 毫秒)足以满足我的测试需求,不过我还将尝试连续 3 次更换相机,然后再抛出错误。我不确定如何检查实际设备是否停止或关闭,但我怀疑由于浏览器安全性,这是不可能的。
在一个完美的世界中 MediaStreamTrack.stop()
会 return 一个承诺,向我们提供有关与轨道关联的设备实际上是 stopped/off 还是仍然 运行 因为它被用在其他曲目中。