0

ここで数時間格闘した後、私はここにいます。次のコードがあります。これは、ウェブカメラを起動し、ウェブページでストリームを表示するだけのようです。

<!doctype html>
<html>
  <head>
    <title>HTML5 Webcam Test</title>
  </head>
  <body>
    <video id="sourcevid" autoplay>Put your fallback message here.</video>
    <div id="errorMessage"></div>
    <script>
    video = document.getElementById('sourcevid');
    navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.getUserMedia; 
    window.URL = window.URL || window.webkitURL;
    function gotStream(stream) {
       if (window.URL) {
          video.src = window.URL.createObjectURL(stream);
       } else {
          video.src = stream; // Opera.
       }

       video.onerror = function(e) {
          stream.stop();
       };

       stream.onended = noStream;
    }

    function noStream(e) {
       var msg = 'No camera available.';
       if (e.code == 1) {
          msg = 'User denied access to use camera.';
       }
       document.getElementById('errorMessage').textContent = msg;
    }


    navigator.webkitGetUserMedia({video: true}, gotStream, noStream);
    </script> 
 </body>
</html>

コンソールにエラーはありませんが、ウェブカメラ ストリームもありません。「ユーザーがカメラを使用するためのアクセスを拒否しました。」

.onended別の例を試してみましたが、長すぎて表示できませんでしたが、ページを実行しようとするとすぐに、ストリームが関数に落ちたようです。

function gotStream(stream) {
    video.src = URL.createObjectURL(stream);
    video.onerror = function () {
      stream.stop();
    };
    stream.onended = noStream;
    [...]

noStream何かを出力する単純な関数はどこにありますか:

function noStream() {
   document.getElementById('errorMessage').textContent = 'No camera available.';
}

基本的に、2 番目の例を実行すると、Web ページに「カメラがありません」と表示されます。

私は Chrome バージョン 22.0.1229.94 で実行しています。いくつかのフラグを有効にする必要がある場所を見ましたが、私のchrome://flags;でそれらを見つけることができませんでした。フラグの名前はEnable MediaStreamEnable PeerConnectionでしたが、私のバージョンでは、有効にした 2 番目のフラグしかありません。

何かご意見は?使用している API は古いものですか? 誰かが実際の例を教えてもらえますか?

ありがとう

4

1 に答える 1