上QQ阅读APP看书,第一时间看更新
2.1 媒体流
在WebRTC的众多技术中,我们首先介绍媒体流(MediaStream),因为媒体流应用在WebRTC技术的各个方面,理解了媒体流的相关概念和使用方法,才能更好地展开介绍其他技术。
媒体流是信息的载体,代表了一个媒体设备的内容流。媒体流可以被采集、传输和播放,通常一个媒体流包含多个媒体轨道,如音频轨道、视频轨道。
媒体流使用MediaStream接口来管理,通常获取媒体流的方式有如下几种。
- 从摄像头或者话筒获取流对象。
- 从屏幕共享获取流对象。
- 从canvas(HTMLCanvasElement)内容中获取流对象。
- 从媒体元素(HTMLMediaElement)获取流对象。
上述方法获取的媒体流都可以通过WebRTC进行传输,并在多个对等端之间共享。
MediaStream的定义如代码清单2-1所示。
代码清单2-1 MediaStream的定义
interface MediaStream : EventTarget { constructor(); constructor(MediaStream stream); constructor(sequence<MediaStreamTrack> tracks); readonly attribute DOMString id; sequence<MediaStreamTrack> getAudioTracks(); sequence<MediaStreamTrack> getVideoTracks(); sequence<MediaStreamTrack> getTracks(); MediaStreamTrack? getTrackById(DOMString trackId); void addTrack(MediaStreamTrack track); void removeTrack(MediaStreamTrack track); MediaStream clone(); readonly attribute boolean active; attribute EventHandler onaddtrack; attribute EventHandler onremovetrack; };
我们将在本节详细讨论媒体流的构造函数、属性、方法和事件。