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

属性的值是一个列表,表中的每个值不用必须得到满足,前面的会优先得到满足。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值