2017-02-13 1 views
1

Wenn die Webcam in Chrome verwendet wird, wird auf der Registerkarte für diese Seite ein roter Punkt angezeigt. Und wenn andere Seiten versuchen, auf die Webcam zuzugreifen, wird Schwarz für Video angezeigt. Meine Frage ist, ist es in der Lage, mit JavaScript zu überprüfen, dass Webcam verwendet wird? Wie?So prüfen Sie mit JavaScript, ob die Webcam in Chrome verwendet wird

von navigator.getUserMedia Verwendung Ich habe versucht, Code folgende:

navigator.getUserMedia = navigator.getUserMedia || 
    navigator.webkitGetUserMedia || navigator.mozGetUserMedia || 
    navigator.msGetUserMedia; 

navigator.getUserMedia({ audio: true, video: true }, function (stream) { 
    var mediaStreamTrack = stream.getVideoTracks()[0]; 
    if (typeof mediaStreamTrack != "undefined") { 
     mediaStreamTrack.onended = function() {alert('Your webcam is busy!')} 
    } else errorMessage('Permission denied!'); 
}, function (e) {alert("Error: " + e.name);}); 

Einfügen den Code in der Konsole, wenn eine Seite Video-Streaming ist, bekam ich keine Antwort.

Irgendwelche Ideen? Vielen Dank!

Antwort

1

Versuchen Sie stattdessen mit den enabled und readyState Eigenschaften der MediaStreamTrackobject. Anschließend können Sie eine JavaScript-Array-Funktion wie some() verwenden, um die Spuren zu durchlaufen und überprüfen, ob ein enabled Satz wahr und & & readyState gleich string ‚lebt" haben:

navigator.getUserMedia = (navigator.getUserMedia || 
    navigator.webkitGetUserMedia || 
    navigator.mozGetUserMedia || 
    navigator.msGetUserMedia); 

if (navigator.getUserMedia) { 
    navigator.getUserMedia({ 
     audio: true, 
     video: true 
    }, 
    function(stream) { 
     // returns true if any tracks have active state of true 
     var result = stream.getVideoTracks().some(function(track) { 
     return track.enabled && track.readyState === 'live'; 
     }); 

     if (result) { 
     alert('Your webcam is busy!'); 
     } else { 
     alert('Not busy'); 
     } 
    }, 
    function(e) { 
     alert("Error: " + e.name); 
    }); 
} 

Hoffentlich

+0

hilft! Danke! Diese Antwort funktioniert. Zusätzliche Frage: Wenn ich den Stream ausschalten möchte, füge ich eine Zeile in der Funktion (track) {track.stop(); return ...} hinzu, aber es schaltet den Stream nicht ab ? –

+0

Es scheint, als ob das funktionieren sollte, aber selbst wenn die Kamera noch nicht benutzt wird, wird immer noch "Ihre Webcam ist beschäftigt!" Angezeigt. – spfursich

+0

Könnte th Ist irgendetwas auf Ihrem Gerät, das die Webcam benutzt? Eine Art Webcam-Treiber oder aktive Browser-Plugins, die die Webcam in einem aktiven Zustand halten? –

Verwandte Themen