Turn off webcam/camera after using getUserMedia [duplicate]
localstream.stop() has been depreciated and no longer works. See this question and answer:Stop/Close webcam which is opened by navigator.getUserMedia
And this link:
Essentially you change localstream.stop()
to localstream.getTracks()[0].stop();
Here's the source in the question updated:
<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>
The code above works - as shown by @jib here using the above code:
function vidOff() { vid.pause(); vid.src = ""; localstream.stop();}
The problem is to do with it being a persistent background page. I'm swapping over to event pages for the Chrome extension as a work around.