WebRTC M66~M88关键更新

原文:https://blog.csdn.net/sonysuqin/article/details/112235095
注:
走马观花,只列出一些自认为比较关键的更新,可能有所遗漏;
修复的bug没有列出;
基本上下列所有版本的更新记录中AEC3都有一些提交,说明近年AEC3一直是WebRTC的重点内容,这里也没有列出。
M66
2018-03-21

修正Opus编码使用DTX出现的长延时,影响音视频同步;
DTMF从RTCPeerConnection转移到RTCRtpSender;
增加MediaStreamTrack.getCapabilities()方法获取MediaStreamTrack的能力
增加RelayPortFactoryInterface用于自定义relay(turn)端口;
RtpSender可以发送app指定的数据;
RTCP的发送间隔可以配置;
为联播的每个子流增加RTCRtpEncodingParamers.active字段;
CreateAnswer验证信令状态,必须是"have-remote-offer"或者"have-local-pranswer",否则拒绝;
新增一些丢帧相关的度量信息;
fec控制器插件化,PeerConnectionFactory可以使用外部fec控制器;
VoE API重构;
STUN binding消息发送间隔可以配置,并收集状态。
M67
2018-05-22

Chrome自动播放策略影响本地和远端媒体流的播放;
Android MIPS架构将被移除;
默认SRTP认证tag长度从32位改为80位。
getStats新API可以根据selector分别获取sender、receiver的stats;
更新Android、iOS端PeerConnection API,可以使用Unified Plan和RtpTransceivers;
NetEQ中为expand rate(丢包隐藏比例)增加UMA直方图;
减小fec表的尺寸,降低为fec控制器计算packet loss mask的复杂性;
默认使能round-robin包发送队列;
TurnPort类可以调用新增接口发送自定义stun消息;
支持一个sender/receiver中包含多个stream;
媒体流名从label变为到id,以支持多流;
getStats新增googHugeFramesSent,发送的巨型帧数;
允许清除VideoFormat,允许摄像头、抓屏之间的编码参数切换。
M68
2018-06-29

iOS默认去掉软编;
抓屏联播,需要SFU、MCU自行区别子流,不能仅仅依赖分辨率,不同子流可能分辨率一样,但是码率和帧率不一样;
MacOS和Windows支持实验性质的系统级回声消除;
ICE中支持VPN接口类型。
M69
2018-08-27

开始推进Unified Plan,RtpTransceivers;
数据通道的closing步骤修改,不向下兼容;
联播每层可以单独设置最大码率,通过调用RTCSender.setParameters()。
M70
2018-10-10

Android SDK默认不包含视频编解码器,需要的时候需要传递DefaultVideoEnoderFactory给createPeerConnectionFactory;
允许使用PlanB创建联播的offer、answer;
实现并评估PCC拥塞控制算法。
M71
2018-10-30

Unified Plan还处于试验阶段,预计M72升级为正式版,firefox已经使用Unified Plan;
增加MacOS framework;
集成测试BBR(后面版本被移除);
允许配置开关FrameDropper;
PacedSender中实现round-robin发送队列;
增加"number of video freezes per minute" metrics,也就是每分钟卡顿帧数。
M72
2018-12-22

Unified plan默认启用;
JS方法getDisplayMedia默认启用,用于获取屏幕,不用再安装扩展;
JS的resizeMode constrainable属性可以用于控制是否自动修改分辨率;
内网环境下可以使用mDNS建立P2P连接,隐藏私有内网地址;
抓屏模式下,可以设置较大的播放延迟,用于平滑突发较大的视频流;
未确认但是已经发送的流量,也加入带宽估计;
自适应的丢包-退避阈值,LossBasedBandwidthEstimation类实现,默认不打开;
RtpSender增加FrameEncryptorInterface,用户可以自定义加密算法;
正确支持VPN接口类型;
可以分别设置音、视频流的RTCP包发送间隔;
联播可以单独设置每个空间层的帧间隔;
收到乱序包后,延迟一段时间再发送NACK,期望空洞尽量被填充;
支持2字节RTP头扩展;
支持配置音频JitterBuffer最小延迟。
M73
2019-02-26

支持mDNS作为local candidate;
JS的一些WebRTC1.0的API;
JS在tab页共享的时候,会话可以不用停止;
SDP支持RID。
M74
2019-03-27

ICEConnectionState connected状态上报时机修改成打洞成功,而不等待dtls握手成功;
移除RTP扩展头IDs;
桌面平台移除AEC2,AEC3作为默认的回声消除引擎;
Host candidate混淆;
基于RID、MID的联播;
联播空间层分辨率降低系数scale_resolution_down_by。
M75
2019-05-16

开放RTCIceTransport和RTCDtlsTransport接口,用于访问底层ICE、DTLS信息;
chrome://webrtc-internal使用标准getStats;
联播中每个FIR对所有空间层只发送一个关键帧。
M76
2019-07-01

更多标准getStats度量信息;
实现RTCRtpTrasceiver.setCodecPreferences,可以设置用于协商的默认编码参数,也可以用于禁用RTX、RED、FEC等;
实现RTCSctpTransport,允许检查数据通道的传输状态;
实现RTCRtpSender.setStreams,允许将媒体流设置到Sender的Track中。
M77
2019-09-02

收到对应RTP流的反馈包后,MID、RSID扩展头不再继续在每个RTP包中携带,降低带宽;
改进浏览器Tab Capture UI;
新增RTCPeerConnection.restartIce可以在下次交换sdp重协商的时候重启Ice,可以不用管offer、answer的信令交换状态,随时安全调用;
新增RTCPeerConnection.oniceandidateerror,可以报告收集ICE candidate失败;
启用RTCRtpSender.setStreams,允许将媒体流设置到sender的track中;
音频支持输入输出16kHz采样率,之前都是48K;
网络拥塞控制插件化,可以自定义拥塞控制模块。
M78
2019-10-09

增加一些Stats;
编码器最小目标码率可以配置;
如果app未设置,自动设置最大码率上限。
M79
2019-11-15

Stats信息中的RTCSentRtpStreamStats->bytesSent和RTCInboundRtpStreamStats->byteReceived不再统计RTP头,只统计RTP负载的数据;
Chrome新增一个名为"WebRtcLocalIpsAllowedUrls"的企业策略,这个策略定义一个白名单,如果白名单上的URL匹配,Ice Candidate中会使用本地地址,否则会被mDNS地址隐藏;
联播时间层启用重传。
M80
2020-01-15

从该版本开始,代码中的分支名称从M80改成了分支号(80是Chromium版本, 分支号是一个单调递增的Chromium分支号码,例如M80对应3987);
setLocalDescription和setRemoteDescription可以被回滚,以实现"完美协商";
setLocalDescription可以不带参数,该调用会自动调用CreateOffer、CreateAnswer,防止异步回调过程中产生的失步竞争,以实现"完美协商";
增加AV1打包。
M81
2020-02-28

Chrome在没有获得权限的时候enumerateDevices不再暴露用户设备ID。
M82
该版本被取消。

M83
2020-04-23

增加标记测试DTLS1.0的移除;
ice-ufrag和ice-pwd语法增加一些限制,符合ice语法标准;
可插入流试验,用户可以自定义数据流的处理,用于端到端加密等应用;
JS:RTCPeerConnection.canTrickleIceCandidates用于设置服务端是否支持trickling ice candidate;
JS:RTCRtpSendParameters.degradationPreference用于设置质量调整策略,可以设置为"maintain-framerate", “maintain-resolution”, “balance”;
Opus升级到1.3;
MID、RID扩展头是否在每个RTP包中携带可以配置。
M84
2020-06-03

getStats接口获得联播下每个子流的信息,用SSRC区分;
VoIP纯语音引擎API,只包含音频编解码、NetEQ、RTP/RTCP处理,网络IO交给APP。
M85
2020-07-17

默认视频质量分析接口,允许增加多个peer;
增加HEVC编码名"H265X"到media/base/media_constants.h。
M86
2020-09-16

修复堆栈溢出攻击漏洞CVE-2020-6514,允许攻击者通过一个SCTP流从网络中以特权进行堆栈溢出攻击;
增加H264的sdp参数,fmtp=sps-pps-idr-in-keyframe,设置是否每个关键帧携带sps、pps。
M87
2020-11-06

提前警告,RTP数据通道即将被移除,基于SCTP的数据通道作为默认数据通道;
支持SDP完美协商;
Transceiver增加新方法stop。
M88
2020-12-16

VPX支持NV12,无需转换成I420;
RTP数据通道被移除,基于SCTP的数据通道作为默认数据通道。
————————————————
版权声明:本文为CSDN博主「一朵喇叭花压海棠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sonysuqin/article/details/112235095

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345