MediaStream 废弃

如果您使用 getUserMedia() 或 WebRTC,则可能需要调整代码 (适用于 Chrome 45 及更高版本)。

MediaStream API 表示 同步媒体流。例如,从相机获取的视频流 麦克风输入已同步视频轨道和音轨。每个轨道 以 MediaStreamTrack。 (不要与 <track> 元素混淆!)

Chrome 45 中废弃了 3 项 MediaStream

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

同时添加了两项功能:

  • MediaStream.active
  • MediaStreamTrack.stop()

这些测试需要进行以下更改:

  • 使用 MediaStream.active 检查 MediaStream 是否为流式传输,而非 MediaStream.ended
  • 使用 MediaStreamTrack.stop()(而非 MediaStream.stop())停止流式传输。
  • 如果您需要 MediaStream 的唯一标识符,请使用 MediaStream.id,而不是 MediaStream.labelMediaStreamTrack.label 为数据流提供简单易懂的源设备名称,例如FaceTime 高清摄像头(内置)(05ac:8510)

您可以查看实际操作过程:在以下位置打开 simpl.info/gum: Chrome(在带有摄像头的设备上)并查看 Chrome 开发者工具控制台。通过 传递到 getUserMedia() 回调的 MediaStream 对象 stream 演示处于全局范围内,因此您可以从控制台进行检查。致电 stream.getTracks()[0],查看此信息流的MediaStreamTrack

屏幕截图:Chrome 开发者工具控制台中的 MediaStream 和 MediaStreamTrack

Stop(),已结束且有效

媒体捕获和流 W3C 工作组讨论将新曲目添加到 MediaStream 时发生的问题, 以及是否结束了空的 MediaStream,他们意识到 在 MediaStream 上实现 ended 的方法不合理(例如“永不重新开始”)。在 HTML5 的其他部分中,“结束”表示“已经结束, 永不恢复”。“有效”则不会产生任何影响:无效的视频流 再次变为有效状态,例如,如果向其中添加了新轨道。工作组没有使属性和功能混乱,而是决定 移除它。

以下示例展示了如何使用“MediaStream.active”查看 Deployment 的 信息流:

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
}

MediaStream 中移除 stop() 不会移除任何实际功能: 因此必须在 Google Cloud 上 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 提供 MediaStreamMediaStreamTrack.label 提供来源的名称 例如摄像头或麦克风的类型。

有关MediaStreamMediaStreamTrack的更多信息已可供查看 Mozilla 开发者网络,以及 HTML5 Rocks 很好地介绍了getUserMedia() 捕获音频与视频

我们一如既往地感谢您就 Chrome 变更提供反馈意见。您可以点击此处此处关注与弃用相关的 bug,并在实现意图中找到更多讨论和详情。