我创建了一个带有摄像头输入的 Web 应用程序。使用 html 5 工具,我设法在视频元素中显示来自移动设备摄像头的流。
使用 video.facingMode 我实现了用户和环境之间的切换。此解决方案适用于 Android Chrome 和 IOS Safari,但不适用于 Android Firefox。
我已经使用远程调试来获取捕获中抛出的错误消息:
错误:DOMException:启动视频输入失败
我发现这个问题可能是因为已经有一个活动的流在运行,所以我在切换到新的视频源之前实现了 track.stop() 函数,但没有成功。
这是我项目中的基本代码,以提供有关我所做工作的一些背景:
function getStream() {
const facingMode = Session.get('facingMode');
const constraints = {
video: { facingMode: facingMode }
};
return navigator.mediaDevices.getUserMedia(constraints).
then(gotStream).catch(handleError);
}
function gotStream(_stream) {
stream = _stream
videoElement.srcObject = stream;
}
function handleError(error) {
if (stream) {
stream.getTracks().forEach(track => {
track.stop();
});
}
console.error('Error: ', error);
}
getStream 函数在页面呈现后运行,并在单击事件中运行以在面对模式之间切换。