ここで数時間格闘した後、私はここにいます。次のコードがあります。これは、ウェブカメラを起動し、ウェブページでストリームを表示するだけのようです。
<!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 MediaStream
とEnable PeerConnection
でしたが、私のバージョンでは、有効にした 2 番目のフラグしかありません。
何かご意見は?使用している API は古いものですか? 誰かが実際の例を教えてもらえますか?
ありがとう