Media Streams API - 提供对流式音频和视频数据的支持

Media Capture and Streams API,通常称为 Media Streams APIMediaStream API,是与 WebRTC 相关的 API,它提供对流式音频和视频数据的支持。

它提供了用于处理流及其组成轨道的接口和方法、与数据格式相关的约束、异步使用数据时的成功和错误回调以及在此过程中触发的事件。

概念和用法

API 基于对 MediaStream 对象的操作,该对象表示音频或视频相关数据的流量。请参阅 获取视频 中的实例。

MediaStream 由零个或多个 MediaStreamTrack 对象组成,代表各种音频或视频轨道。每个 MediaStreamTrack 可能有一个或多个通道。通道表示媒体流的最小单位,例如与给定扬声器关联的音频信号,例如立体声音轨中的左声道右声道

MediaStream 对象有一个输入和一个输出。由 getUserMedia() 生成的 MediaStream 对象称为本地,并将用户的相机或麦克风其中一个作为其源输入。非本地 MediaStream 可能表示一个媒体元素,如 <video><audio>,它是一个来自网络并通过 WebRTC RTCPeerConnection API 获取的流 ,或使用 Web Audio API MediaStreamAudioSourceNode 创建的流。

MediaStream 对象的输出链接到 consumer。它可以是媒体元素,例如 <audio><video>、WebRTC RTCPeerConnection API 或 Web Audio API MediaStreamAudioSourceNode

接口

在这些参考文章中,您将找到您需要了解的有关构成 Media Capture 和 Streams API 的每个接口的基本信息。

Media Capture 和 Streams API 规范的早期版本包括单独的 AudioStreamTrackVideoStreamTrack 接口 —— 两个接口都基于 MediaStreamTrack —— 它们表示这些类型的流。这些不再存在,您应该更新任何现有代码以直接使用 MediaStreamTrack

事件

指南和教程

以下文章提供了额外的指导和操作方法信息,可帮助您学习使用 API,以及如何执行您可能希望处理的特定任务。

功能、约束和设置

本文讨论了约束和能力的双重概念,以及媒体设置,并包括一个我们称之为实例约束练习器的示例。约束练习器可让您试验不同约束集的结果,这些约束集应用于来自计算机 A/V 输入设备(如网络摄像头和麦克风)的音频和视频轨道。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持

55

21 webkit

1215 不支持

42

15 webkit

11
MediaStream() 构造函数21≤1844 不支持42 不支持
active451252 不支持 不支持 支持
active 事件45≤79 未知 不支持 未知 未知
addTrack261244 不支持 不支持 支持
addtrack 事件 支持1250 不支持 不支持 支持
clone451248 不支持 不支持 支持
ended 支持 — 541 未知 不支持 不支持 支持 — 39 未知
getAudioTracks2612223 不支持 支持 支持
getTrackById261249 不支持 不支持 支持
getTracks4512 支持 不支持 支持 支持
getVideoTracks2612224 不支持 支持 支持
id 支持 — 5412 — 7941 不支持 支持 — 39 支持
inactive 事件45≤79 未知 不支持 未知 未知
label 支持 — 545 未知 未知 不支持 不支持 未知
onactive45≤79 未知 不支持 未知 未知
onaddtrack261250 不支持 不支持 支持
oninactive45≤79 未知 不支持 未知 未知
onremovetrack2612 不支持 不支持 不支持 支持
removeTrack2612 支持 不支持 支持 支持
removetrack 事件 支持12 不支持 不支持 不支持 支持
stop 支持 — 4713 — 79 未知 不支持 不支持 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持

55

≤37 webkit

55

25 webkit

未知15 未知

42

14 webkit

11
MediaStream() 构造函数3725 未知42 未知 不支持 不支持
active4545 未知52 未知 不支持 支持
active 事件4545 未知 未知 未知 不支持 未知
addTrack3726 未知 不支持 未知 不支持 支持
addtrack 事件 支持 支持 未知50 未知 不支持 支持
clone4545 未知48 未知 不支持 支持
ended 支持 — 541 支持 — 541 未知 不支持 未知 支持 — 41 未知
getAudioTracks3726 未知223 未知 不支持 支持
getTrackById3726 未知49 未知 不支持 支持
getTracks4545 未知 支持 未知 不支持 支持
getVideoTracks3726 未知224 未知 不支持 支持
id 支持 — 54 支持 — 54 未知41 未知 支持 — 41 支持
inactive 事件4545 未知 未知 未知 不支持 未知
label 支持 — 545 支持 — 545 未知 未知 未知 不支持 未知
onactive4545 未知 未知 未知 不支持 未知
onaddtrack3726 未知50 未知 不支持 支持
oninactive4545 未知 未知 未知 不支持 未知
onremovetrack3726 未知 不支持 未知 不支持 支持
removeTrack3726 未知 支持 未知 不支持 支持
removetrack 事件 支持 支持 未知 不支持 未知 不支持 支持
stop 支持 — 47 支持 — 47 未知 未知 未知 不支持 未知

1. 在 Chrome 52 中已弃用。

2. 在 Samsung Internet 6.0 中已弃用。

3. 在 Firefox 64 之前,此方法返回一个 AudioStreamTrack 对象数组。但是, MediaStreamTrack 现在已经包含了该接口的功能。

4. 在 Firefox 64 之前,此方法返回一个 VideoStreamTrack 对象数组。但是, MediaStreamTrack 现在已经包含了该接口的功能。

5. 在 Chrome 45 中已弃用。

6. 在 Samsung Internet 5.0 中已弃用。

相关链接