1

デバイスのカメラ/ウェブカメラからのライブ ビデオを表示でき、スナップショットを作成できるボタンがある HTML5 ページを作成する必要があります。派手なものは何もありません (html5camera.com に似ています)。いくつかのチュートリアル ( http://www.html5rocks.com/en/tutorials/getusermedia/intro/および http://davidwalsh.name/browser-camera ) に従ってみましたが、HTML はまだ初心者なので、見つけたコード スニペットをどうすればよいかわかりません。

いくつかのコードを HTML ファイルにコピーしましたが、Chrome で開くと、アドレス バーの右側にカメラとマイクへのアクセスがブロックされていると表示されます (わざわざ許可を求めずに)。次回許可を求めるオプションをクリックしてページをリロードしても、何も起こりません。デフォルトで許可するようにプリファレンスを設定する方法はありません。また、Chrome Canary (Chrome と同じ) と Firefox (許可を求めませんでした) も試しました。

HTML を間違えたのでしょうか。クロムが問題ですか?

私がこれまでに持っているコード:

<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=yes">
    </head>
    <body>
        <video id="video" width="640" height="480" autoplay></video>
        <button id="snap">Snap Photo</button>
        <canvas id="canvas" width="640" height="480"></canvas>
        <script>
            // Put event listeners into place
            window.addEventListener("DOMContentLoaded", function() {
                // Grab elements, create settings, etc.
                var canvas = document.getElementById("canvas"),
                    context = canvas.getContext("2d"),
                    video = document.getElementById("video"),
                    videoObj = { "video": true },
                    errBack = function(error) {
                        console.log("Video capture error: ", error.code); 
                    };
                // Put video listeners into place
                if(navigator.getUserMedia) { // Standard
                    navigator.getUserMedia(videoObj, function(stream) {
                        video.src = stream;
                        video.play();
                    }, errBack);
                } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
                    navigator.webkitGetUserMedia(videoObj, function(stream){
                        video.src = window.webkitURL.createObjectURL(stream);
                        video.play();
                    }, errBack);
                }
                // Trigger photo take
                document.getElementById("snap").addEventListener("click", function() {
                    context.drawImage(video, 0, 0, 640, 480);
                });
            }, false);
        </script>
    </body>
</html>
4

1 に答える 1