簡體   English   中英

如何使用 JavaScript 檢查 Chrome 中正在使用網絡攝像頭

[英]How to check with JavaScript that webcam is being used in Chrome

如果在 Chrome 中使用網絡攝像頭,則該頁面的選項卡上會出現一個紅點。 如果其他頁面嘗試訪問網絡攝像頭,視頻將變黑。 我的問題是,它是否能夠使用 JavaScript 檢查正在使用網絡攝像頭? 如何?

通過使用 navigator.getUserMedia,我嘗試了以下代碼:

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

當頁面正在流式傳輸視頻時將代碼粘貼到控制台中,我沒有收到任何響應。

有任何想法嗎? 謝謝!

嘗試使用MediaStreamTrack 對象enabledreadyState屬性。 然后,您可以使用諸如some()類的 JavaScript 數組函數來遍歷軌道並檢查是否有任何enabled設置為 true 並且 && readyState等於字符串“live”:

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

希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM