繁体   English   中英

getUserMedia()-在手机上选择后置摄像头

[英]getUserMedia() - selecting rear camera on mobile

这是我的问题。

我正在制作一个使用JS-OCR拍照和检测单词的小应用程序。 它运作良好,但是我只能使用前置摄像头。 我的想法是仅使用后置摄像头,没有必要选择切换摄像头。

我正在阅读有关getUserMedia()函数的信息,但无法解决问题。 这是所涉及的代码(函数searchForRearCamera() ):

function searchForRearCamera() {
    var deferred = new $.Deferred();

    //         Check that the browser supports getUserMedia.
    // If it doesn't show an alert, otherwise continue.
    if (navigator.getUserMedia) {
        // Request the camera.
        navigator.getUserMedia(
            // Constraints
            {
                video: true
            },

            // Success Callback
            function (localMediaStream) {

            },

            // Error Callback
            function (err) {
                // Log the error to the console.
                console.log('The following error occurred when trying to use getUserMedia: ' + err);
            }
        );

    } else {
        alert('Sorry, your browser does not support getUserMedia');
    }

    //MediaStreamTrack.getSources seams to be supported only by Chrome

    if (MediaStreamTrack && MediaStreamTrack.getSources) {

        MediaStreamTrack.getSources(function (sources) {
            var rearCameraIds = sources.filter(function (source) {
                return (source.kind === 'video' && source.facing === 'environment');
            }).map(function (source) {
                return source.id;
            });

            if (rearCameraIds.length) {
                deferred.resolve(rearCameraIds[0]);
            } else {
                deferred.resolve(null);
            }
        });
    } else {
        deferred.resolve(null);
    }

    return deferred.promise();
}

这是演示

navigator.getUserMedia早已被弃用。 立即使用navigator.mediaDevices.getUserMedia

要获取后置摄像头,可以使用MediaConstraint:video:facingMode属性。 可用值为'user' (前置摄像头)和'environment' (后置摄像头)。

 navigator.mediaDevices.getUserMedia({ audio: false, video: { facingMode: 'environment' } }) .then(stream => vid.srcObject = stream) .catch(console.error); 
 <video muted autoplay id="vid"></video> 

作为一个小玩意,因为null来源的StackSnippet的iframe可能会阻止对gUM的请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM