MediaStream - 表示媒体内容流

MediaStream 接口表示媒体内容流。流由几个轨道组成,例如视频或音频轨道。每个轨道都被指定为 MediaStreamTrack 的实例。您可以通过使用构造函数或通过调用 MediaDevices.getUserMedia() 来获取 MediaStream 对象。

一些用户代理提供该接口的子类,以提供更精确的信息或功能,例如 CanvasCaptureMediaStream

构造函数

MediaStream()

创建并返回一个新的 MediaStream 对象。您可以创建一个空流,一个基于现有流的流,或一个包含指定轨道列表的流(指定为 MediaStreamTrack 对象的数组)。

属性

该接口从其父接口 EventTarget 继承了属性。

MediaStream.active 只读

一个布尔值,如果 true 处于活动状态,则返回 true,否则返回 false

MediaStream.ended 只读

一个布尔值,如果已到达流的末尾,则该值为 true。它已从规范中删除;您应该检查MediaStreamTrack.readyState 的值,判断它的值是否为 "ended",以确保曲目已完成播放。

MediaStream.id 只读

一个 DOMString,包含 36 个字符,表示对象的通用唯一标识符(UUID)。

事件处理程序

MediaStream.onaddtrack

一个 EventHandler,表示添加新 MediaStreamTrack 对象时触发 addtrack 事件时要执行的操作。

MediaStream.onremovetrack

一个 EventHandler,表示从 {domxref("MediaStreamTrack")}} 对象中删除 removetrack 事件时要执行的操作。

方法

此接口从其父接口 EventTarget 继承了属性。

MediaStream.addTrack()

存储作为参数给出的 MediaStreamTrack 的副本。如果轨道已经添加到 MediaStream 对象,则没有任何反应。

MediaStream.clone()

返回 MediaStream 对象的一个副本。但是,克隆将具有 id 的唯一值。

MediaStream.getAudioTracks()

返回存储在 MediaStream 对象中的 MediaStreamTrack 对象的列表,这些对象的 kind 属性为 "audio"。这些对象是无序的,并且可能每一个浏览器顺序都不一致。

MediaStream.getTrackById()

返回其 ID 对应于参数 trackid 中给出的 ID 的轨道。如果没有给出参数,或者如果不存在具有该 ID 的轨道,则返回 null。如果多个轨道具有相同的 ID,则返回第一个轨道。

MediaStream.getTracks()

返回存储在 MediaStream 对象中的所有 MediaStreamTrack 对象的列表,不对 kind 属性的值做过滤。这些对象是无序的,并且可能每一个浏览器顺序都不一致。

MediaStream.getVideoTracks()

返回存储在 MediaStream 对象中的 MediaStreamTrack 对象的列表,这些对象的 kind 属性为 "video"。这些对象是无序的,并且可能每一个浏览器顺序都不一致。

MediaStream.removeTrack()

删除作为参数给出的 MediaStreamTrack。如果轨道不是 MediaStream 对象的一部分,则不会发生任何事情。

事件

addtrack

添加新的 MediaStreamTrack 对象时触发。也可以通过 onaddtrack 属性设置。

removetrack

删除 MediaStreamTrack 对象时触发。也可以通过 onremovetrack属性设置。

规范

规范 状态 备注
Media Capture and Streams
MediaStream 的定义
编者的草案 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持 支持 支持 支持 不支持 不支持 未知
MediaStream55 支持44 不支持42 不支持
active 支持1252 未知 未知 未知
ended 支持 — 541 未知 不支持 未知 支持 — 39 未知
id 支持 — 541241 未知 支持 — 39 未知
onaddtrack 支持1250 未知 未知 未知
onremovetrack 支持12 不支持 未知 未知 未知
addTrack 支持1244 未知 未知 未知
clone 支持1248 未知 未知 未知
getAudioTracks 支持12 未知 未知 支持 未知
getTrackById 支持1249 不支持 未知 未知
getTracks 支持12 未知 未知 支持 未知
getVideoTracks 支持12 未知 未知 支持 未知
removeTrack 支持12 未知 未知 支持 未知
label 支持 — 542 未知 未知 不支持 不支持 未知
stop 不支持13 未知 不支持 不支持 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持 支持 支持 未知 未知 不支持 未知
MediaStream5555 支持42 未知 未知 不支持
active 支持 支持 支持52 未知 未知 未知
ended 支持 — 541 支持 — 541 支持 不支持 未知 支持 — 39 未知
id 支持 — 54 支持 — 54 支持41 未知 支持 — 39 未知
onaddtrack 支持 支持 支持50 未知 未知 未知
onremovetrack 支持 支持 支持 不支持 未知 未知 未知
addTrack 支持 支持 支持 不支持 未知 未知 未知
clone 支持 支持 支持48 未知 未知 未知
getAudioTracks 支持 支持 支持 未知 未知 未知 未知
getTrackById 支持 支持 支持49 未知 未知 未知
getTracks 支持 支持 支持 未知 未知 未知 未知
getVideoTracks 支持 支持 支持 未知 未知 未知 未知
removeTrack 支持 支持 未知 未知 未知 未知 未知
label 支持 — 542 支持 — 542 未知 未知 未知 不支持 未知
stop 不支持 不支持 未知 未知 未知 不支持 未知

1. 在 Chrome 52 中弃用。

2. 在 Chrome 45 中弃用。

相关链接