0

我创建了一个带有摄像头输入的 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 函数在页面呈现后运行,并在单击事件中运行以在面对模式之间切换。

4

0 回答 0