WebRTC基础知识体系构建-媒体定义
WebRTC既定义了如何传输媒体,又定义了媒体该如何表示。
一、轨道
1、定义:MedaiStreamTrack ,是WebRTC中媒体的基本单元。
2、源:代表某录制设备或录制内容能返回的单一类型媒体,
如 手机摄像头可录制的视频,可以作为一个源,手机Mic录制的音频也可以作为一个源。
一段录好的mp4视频,其中的视频可以作为一个源,音频也可以作为一个源。
每个WebRTC轨道都有一个源与之关联,通过WebRTC不能直接访问或控制源,对源的一切操作,都要通过轨道。
不同的MedaiStreamTrack对象,可以代表统一媒体源。
3、暂停轨道媒体的两种方式
1)静音
表示轨道的底层媒体源,暂时无法提供媒体。
应用程序无法控制轨道何时静音,但是可以检查轨道的muted属性值。
静音后,音频轨道将不再发声,视频轨道将显示黑屏
2)禁用
将轨道对象的enabled属性设置为false,可以单独逐一禁止每条轨道。
3 )readyState属性表示轨道的状态
new:尚未连接至媒体
enabled:其源当前没有,且永远无法再提供更多数据,如 拔掉正在使用的摄像头的电源。
live:表示可以生成媒体。
静音和禁用独立于轨道的readyState属性,可以同时设置三者中的任何一个值。
二、流
1、定义:MediaStream 是 MedaiStreamTrack对象的集合,
2、创建MediaStream对象的两种方式
1)请求访问本地媒体 getUserMedia(未来可能存在在复制现有本地MediaStream的内容来构建信息的MediaStream,但这种方式目前未能得到广泛支持)
2)使用对等连接来接收新流
3、MediaStream的enable属性
所有的轨道的enable属性都为true的时候,MediaStream的enable属性为true.
三、捕获本地媒体
这里参考官方demo中各平台的api
四、媒体选择和控制
WebRTC api不能直接控制源,但可以通过约束来选择源和控制其属性。
1、可约束属性分为两种类型
1)枚举
如:"faceMode":{"user","environment"}
2)范围
2、约束机制的目的
让应用程(浏览器中的模块和客户端应用程序(android ,ios 等))的优化,在设备支持的合理范围内进行,
如为了控制网络拥塞,通过设置一些参数来控制视频的大小。但必须在在合理的参数范围内进行修改。
3、约束机制的工作原理
例子
constraints={
"mandatory":{"aspectRatio":1.33333333}
"optional":[
{"width":{"max":640},
{"height": {"min":400}}
]
}
约束结构是一个对象,有两个可以选择的属性,可以给二者和其中任意一个属性赋值。
1、mandatory
属性的值是一个对象,必须满足其中所有的值才能完成回调。
2、optional
属性的值是一个列表,表中的每个值不用必须得到满足,前面的会优先得到满足。
本文地址:https://blog.csdn.net/ydjjcdd/article/details/110630583