MediaStream 淘汰項目

使用 getUserMedia() 或 WebRTC 時,可能需要調整程式碼 。

MediaStream API 代表 的同步串流。例如從相機拍攝的串流 麥克風輸入有同步視訊和音軌。每首曲目 代表的是 MediaStreamTrack。 (別和 <track> 元素搞混!)

Chrome 45 有三種 MediaStream 淘汰項目:

  • MediaStream.ended
  • MediaStream.label
  • MediaStream.stop()

其中並有兩個新增項目:

  • MediaStream.active
  • MediaStreamTrack.stop()

這些變更需要經過下列調整:

  • 使用 MediaStream.active 檢查 MediaStream 是否為串流,而非 MediaStream.ended
  • 使用 MediaStreamTrack.stop() 即可停止直播,而不是MediaStream.stop()
  • 如果您需要 MediaStream 的專屬 ID,請使用 MediaStream.id 而非 MediaStream.labelMediaStreamTrack.label 可為串流的來源裝置提供使用者可理解的名稱,例如。FaceTime HD 高畫質相機 (內建) (05ac:8510)

您可以在實際操作中看到這些範例:在 simpl.info/gum 中開啟 Chrome (使用配備攝影機的裝置),以及 Chrome 開發人員工具控制台。 傳遞至 getUserMedia() 回呼的 MediaStream 物件 stream 仍在全域範圍內,因此您可以透過控制台檢查。致電 stream.getTracks()[0]即可查看這個串流的「MediaStreamTrack」。

這張螢幕截圖顯示 Chrome 開發人員工具控制台中的 MediaStream 和 MediaStreamTrack

Stop() (已結束且有效)

媒體擷取和串流 W3C 工作小組在檢查在 MediaStream 中新增曲目時會發生的問題。 並判斷是否結束空白 MediaStream 時,他們察覺到 在 MediaStream 上實作 ended 的方式不夠合理 (因為「永遠不會重新開始」)。HTML5 的其他部分「ended」表示「這已結束, 永不恢復'。「有效」而沒有任何影響:閒置的串流作業 (例如新增曲目時),就會再次生效。該工作小組並未保留令人困惑的屬性和功能, 移除。

這裡舉例說明「MediaStream.active」的檢查狀態 串流:

var gumStream;

navigator.getUserMedia({audio: false, video: true},
    function(stream) {
            gumStream = stream;
        // ...
    },
    function(error) {
        console.log('getUserMedia() error', error);
    });

// …

if (gumStream.active) {
    // do something with the stream
}

stop()MediaStream 中移除,並不會移除任何實際功能: 卸離來源裝置的處理程序等 仍是MediaStreamTrack。請改用 MediaStreamTrack 上的 stop()

navigator.getUserMedia({audio: false, video: true},
    function(stream) {
            // can also use getAudioTracks() or getVideoTracks()
        var track = stream.getTracks()[0];  // if only one media track
        // ...
        track.stop();
    },
    function(error){
        console.log('getUserMedia() error', error);
    });

標籤

我們發現,沒有人能瞭解這個屬性的用途!

MediaStream.label」已加入第一版規格,但真的沒有人知道 指定「label」的目標此外,在串流播放時,label 發生了什麼狀況 已透過 RTCPeerConnection 傳送。

W3C 工作小組不滿而遭人刪除,因此已遭移除。

複習一下:MediaStream.id 會提供專屬 ID, MediaStreamMediaStreamTrack.label 提供來源名稱 像是攝影機或麥克風類型

現在可以查看更多關於「MediaStream」和「MediaStreamTrack」的資訊 來自 Mozilla Developer Network HTML5 Rocks 提供了絕佳的 getUserMedia() 簡介 擷取音訊,影片

無論如何,我們都感謝您針對 Chrome 的異動提供寶貴意見。您可以追蹤這些淘汰項目的錯誤 (這個頁面這個頁面),並參閱「導入意圖」一文,進一步瞭解相關資訊和細節。