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 的定义 |
编者的草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 未知 |
MediaStream | 55 | 支持 | 44 | 不支持 | 42 | 不支持 |
active | 支持 | 12 | 52 | 未知 | 未知 | 未知 |
ended | 支持 — 541 | 未知 | 不支持 | 未知 | 支持 — 39 | 未知 |
id | 支持 — 54 | 12 | 41 | 未知 | 支持 — 39 | 未知 |
onaddtrack | 支持 | 12 | 50 | 未知 | 未知 | 未知 |
onremovetrack | 支持 | 12 | 不支持 | 未知 | 未知 | 未知 |
addTrack | 支持 | 12 | 44 | 未知 | 未知 | 未知 |
clone | 支持 | 12 | 48 | 未知 | 未知 | 未知 |
getAudioTracks | 支持 | 12 | 未知 | 未知 | 支持 | 未知 |
getTrackById | 支持 | 12 | 49 | 不支持 | 未知 | 未知 |
getTracks | 支持 | 12 | 未知 | 未知 | 支持 | 未知 |
getVideoTracks | 支持 | 12 | 未知 | 未知 | 支持 | 未知 |
removeTrack | 支持 | 12 | 未知 | 未知 | 支持 | 未知 |
label | 支持 — 542 | 未知 | 未知 | 不支持 | 不支持 | 未知 |
stop | 不支持 | 13 | 未知 | 不支持 | 不支持 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 支持 | 未知 | 未知 | 不支持 | 未知 |
MediaStream | 55 | 55 | 支持 | 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 中弃用。
相关链接
- 使用 MediaStream API
- WebRTC API
- Web Audio API
MediaStreamTrack