1

ラップトップまたはモバイルにあるWebカメラを使用して画像をキャプチャし、キャンバスに配置するプラグインがあります。これはすべて Chrome ではうまく機能しますが、Firefox を使用するとうまくいきません。navigator.getUserMedia が廃止されたため、firefox で問題を引き起こしていると思われます。

リンク: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia

また、Google の開発者は navigator.getUserMedia の使用を提案しており、私のアプリとも互換性があります。

リンク: https://developers.google.com/web/updates/2015/10/media-devices

そのため、Firefox で動作させるには、以下のコードでどのような変更を行う必要があるかを提案してください。

前もって感謝します。

<script type="text/javascript">
var ctx = null;
var canvas = document.getElementById("tmpImage");
var localMediaStream = null;
var video = document.querySelector('video');

function snapshot() {
    if (localMediaStream) {
        ctx.drawImage(video, 0, 0);
        var img = document.getElementById('CaptureImage');
        // "image/webp" works in Chrome 18. In other browsers, this will fall back to image/png.
        img.src = canvas.toDataURL('image/webp');
    }
}

function hasGetUserMedia() {
    // Note: Opera builds are unprefixed.
    return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
        navigator.mozGetUserMedia || navigator.msGetUserMedia);
}

function onFailSoHard(e) {
    if (e.code == 1) {
        alert('User denied access to their camera');
    } else {
        alert('getUserMedia() not supported in your browser.');
    }
}

function start() {

    if (hasGetUserMedia()) {
        if (navigator.webkitGetUserMedia)
            navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
        //var getUserMedia = navigator.webkitGetUserMedia || navigator.getUserMedia;


        //var gumOptions = { video: true, toString: function () { return 'video'; } };    
        if (navigator.getUserMedia) {

            navigator.getUserMedia({
                video: true,
                audio: false
            }, function (stream) {
                if (navigator.webkitGetUserMedia) {
                    video.src = window.webkitURL.createObjectURL(stream);
                } else {
                    video.src = stream; // Opera
                }
                localMediaStream = stream;
            }, onFailSoHard);
        } else {
            video.src = 'somevideo.webm'; // fallback.
        }
    }
}

function stop() {
    video.pause();
    video = document.getElementById('sourcevid');
    video.src = "";
    localMediaStream.stop();
}

function ResizeCanvas() {
    canvas.height = video.videoHeight;
    canvas.width = video.videoWidth;
}

$(document).ready(function () {
    ctx = canvas.getContext('2d');
});

4

2 に答える 2