当采集音频或视频时,设备会源源不断地产生媒体数据,这些数据就是媒体流,从Canvas,桌面,摄像头捕获的流为视频流,从麦克风捕获的的流称为音频流,媒体流中混入的可能是多种数据 ,因此WebRTC又将其划分成多个轨道,每个轨道对应于具体的设备。
五、媒体流与轨道
本文涉及的API如表所示:
1、媒体流
通过MediaStream接口处理媒体流,一个流包含多个视频流轨道和音频轨道,有两种方法可以输出 媒体流,其一,可以将输出显示为视频或者音频元素; 其二,可以将输出发送到RTCPeerConection对象,然后将其发送到远程计算机。媒体流可以通过摄像头、麦克风、屏幕、画布、视频源、远端流等方式获取。下面简要介绍属性、事件、方法。
(1)属性
active: 流的活动状态,活动为true ,否则为false
ended: 结束状态,结束为true,否则为false
id: 唯一标识符
(2)事件
onactive: 当MediaStream对象变为活动状态时触发活动状态。
onended: 当媒体流终止时触发此事件。
oninactive: 当流变为非活动状态时,触发此事件。
onremovetrack: 从它移除MediaStreamTrack 对象时触发此事件。
(3)方法
addTrack :增加MediaStreamTrack
clone: 使用新id 返回MediaStream对象的克隆。
getAudioTracks: 获取音频轨道列表
getTrackById : 通过id返回媒体流轨道。
2、媒体轨道
MediaStreamTrack表示一段媒体源,是WebRTC的基本媒体单元,每一个轨道都有一个源与之关联。媒体流有两个输出渠道,一是video标签,二是通过RTCPeerConnection发送到远端。
(1)属性
enabled: 布尔值, 轨道有效性
kind: 字符值,audio为音频,video为视频。
muted: 布尔值 :静音状态,true为静音。
readyState: 布尔值,轨道当前状态。
remote: 布尔值,数据通过RTCPeerConnection提供状态,true是远端传输数据。
(2) 事件
started: 轨道开始事件
ended: l轨道结束事件
(3) 方法
getConstraints : 获取轨道采用的约束条件。
applyConstraints: 应用约束条件至轨道。
3、流与轨道API测试示例
此示例用于测试音视频轨道的获取和删除等方法,主要有以下步骤:
(1)设置约束条件,启用音频和视频。
&nb