バックグラウンドページを使用してユーザーのWebカメラにアクセスするChrome拡張機能を開発しています。
ユーザーには、カメラをオフにするオプションが与えられます。
ストリームはオフになっているようです。関連する関数は、ストリームを受信しなくなりました。ただし、Webカメラのライト(現在、Macブックプロで開発およびテスト中)はオフになりません。
何か案は?
ストリームを設定するための私のコードは次のとおりです。
if (navigator.webkitGetUserMedia!=null) {
var options = {
video:true,
audio:false
};
navigator.webkitGetUserMedia(options,
function(stream) {
vid.src = window.webkitURL.createObjectURL(stream);
localstream = stream;
vid.play();
console.log("streaming");
},
function(e) {
console.log("background error : " + e);
});
}
ストリームをオフにする方法は次のとおりです。
function vidOff() {
clearInterval(theDrawLoop);
ExtensionData.vidStatus = 'off';
vid.pause();
vid.src = "";
localstream.stop();
DB_save();
console.log("Vid off");
}
私は行方不明になっていますか?
localstream.stop()は減価償却され、機能しなくなりました。この質問と回答を参照してください: navigator.getUserMediaによって開かれたWebカメラを停止/閉じる
そして、このリンク:
基本的に、localstream.stop()
をlocalstream.getTracks()[0].stop();
に変更します
更新された質問のソースは次のとおりです。
<html>
<head>
<script>
var console = { log: function(msg) { div.innerHTML += "<p>" + msg + "</p>"; } };
var localstream;
if (navigator.mediaDevices.getUserMedia !== null) {
var options = {
video:true,
audio:false
};
navigator.webkitGetUserMedia(options, function(stream) {
vid.src = window.URL.createObjectURL(stream);
localstream = stream;
vid.play();
console.log("streaming");
}, function(e) {
console.log("background error : " + e.name);
});
}
function vidOff() {
//clearInterval(theDrawLoop);
//ExtensionData.vidStatus = 'off';
vid.pause();
vid.src = "";
localstream.getTracks()[0].stop();
console.log("Vid off");
}
</script>
</head>
<body>
<video id="vid" height="120" width="160" muted="muted" autoplay></video><br>
<button onclick="vidOff()">vidOff!</button><br>
<div id="div"></div>
</body>
</html>