2017-02-13 8 views
1

Chrome에서 웹캠을 사용하는 경우 해당 페이지의 탭에 빨간색 점이 표시됩니다. 그리고 다른 페이지가 웹캠에 액세스하려고하면 비디오가 검게 나타납니다. 제 질문은 자바 스크립트로 웹캠을 사용하고 있는지 확인할 수 있습니까? 방법? navigator.getUserMedia를 사용하여 Chrome에서 웹캠이 사용되고 있음을 자바 스크립트로 확인하는 방법

, 나는 다음 코드를 시도 :

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);}); 

페이지에 비디오를 스트리밍 할 때 콘솔에 코드를 붙여, 나는 아무런 응답이 없어.

아이디어가 있으십니까? 감사!

답변

1

enabled 및 속성을 MediaStreamTrackobject 대신 사용해보십시오.

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); 
    }); 
} 

희망하는 데 도움이

+0

: 당신은 트랙을 반복하고는 enabled True로 설정하고 ' "라이브 문자열과 동일 & & readyState을 가지고 있는지 확인하는 등 some() 같은 자바 스크립트 배열 기능을 사용할 수 있습니다 고맙습니다!이 질문에 대한 답변 : 추가 질문 : 스트림을 끄려면 함수 (트랙) {track.stop(); return ...}에 한 줄을 추가하지만 스트림을 끄지 않는 이유는 무엇입니까? ? –

+0

카메라가 이미 사용 중이 아닌 경우에도 여전히 "웹캠이 사용 중입니다!"라고 표시됩니다. – spfursich

+0

일 수 있습니까? 웹캠을 사용중인 컴퓨터의 어떤 것이 있습니까? 웹캠을 활성 상태로 유지하는 일부 종류의 웹캠 드라이버 또는 활성 브라우저 플러그인? –