WebRTC(M66-M88)关键更新说明

注:

  • 走马观花,只列出一些自认为比较关键的更新,可能有所遗漏;
  • 修复的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的数据通道作为默认数据通道。
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: webrtc-qt-example是一个基于Qt框架开发的WebRTC示例项目。 WebRTC是一种开源的实时通信技术,能够支持音频、视频和数据的实时传输。它通过浏览器之间的端对端连接,实现了高质量的实时通信。 webrtc-qt-example的目的是展示如何使用Qt进行WebRTC开发。Qt是一套跨平台的C++应用程序开发框架,它提供了丰富的工具和库,使开发者能够快速构建可靠的应用程序。 这个示例项目提供了一些基本的功能和界面,使开发者能够了解和学习如何将WebRTC集成到Qt应用程序中。它包含了常见的WebRTC功能,如媒体流捕获、媒体流传输、信令交换等。 通过webrtc-qt-example,开发者可以学习到如何使用Qt的多媒体模块来捕获音频、视频和媒体设备。同时,也可以学习到如何使用Qt的网络模块来进行实时信令交换和流传输。 这个示例项目还提供了一些简单的界面,方便开发者进行测试和调试。开发者可以通过该界面实现与其他WebRTC应用的通信,例如建立视频通话、音频通话等。 总之,webrtc-qt-example是一个非常实用的示例项目,可以帮助开发者快速上手并掌握WebRTC在Qt中的开发。 ### 回答2: webrtc-qt-example是一个基于Qt框架的WebRTC示例应用程序。WebRTC是一种开源项目,它提供了在浏览器之间进行实时通信的能力,包括视频和音频的传输。而webrtc-qt-example则是将这种技术集成到Qt应用程序中的一个示例。 在webrtc-qt-example中,它使用了Qt的多媒体框架和WebRTC提供的API来实现音视频的传输和显示。通过使用WebRTC的API,webrtc-qt-example可以建立点对点的连接,进行音频和视频的实时传输。 webrtc-qt-example中的代码结构清晰,易于理解和扩展。它提供了一些基本的功能,如建立连接、发送和接收音视频流、呼叫取消等。开发者可以根据自己的需求来对这些功能进行定制和扩展。 此外,webrtc-qt-example还支持一些高级特性,如媒体设备的选择、音视频的编码和解码等。开发者可以通过修改代码来选择不同的媒体设备,并且可以使用不同的编码和解码算法来满足自己的需求。 总之,webrtc-qt-example是一个很棒的WebRTC示例应用程序,它可以帮助开发者快速了解和使用WebRTC技术。无论是为了实现实时视频通话、视频会议还是其他需要音视频传输的应用场景,webrtc-qt-example都提供了一个良好的起点,帮助开发者快速上手并实现自己的需求。 ### 回答3: webrtc-qt-example是一个基于Qt框架和WebRTC技术的示例应用。WebRTC是一种用于在Web浏览器上实现实时通信的开源项目,它提供了一套丰富的API和协议,可以实现音视频通话、数据传输以及屏幕共享等功能。 webrtc-qt-example利用Qt框架提供的跨平台能力,结合WebRTC技术,展示了在Qt应用中如何实现实时通信功能。这个示例应用具有以下特点和功能: 1. 界面友好:webrtc-qt-example使用Qt的GUI绘制工具,具有美观、直观的用户界面,便于用户操作和使用。 2. 实时通信:webrtc-qt-example内置了WebRTC的音视频通信功能,可以实现实时的语音和视频通话,支持两个或多个用户之间的通信。 3. 数据传输:除了音视频通话,webrtc-qt-example还支持在通话中传输数据。可以通过编写代码,实现实时文本传输或共享文件等功能。 4. 屏幕共享:webrtc-qt-example还支持屏幕共享功能,可以将自己的屏幕内容分享给其他用户,实现远程协助或在线教育等应用场景。 通过webrtc-qt-example的学习和实践,开发者可以了解并深入理解WebRTC技术的使用方法,以及在Qt框架中的应用。同时,借助webrtc-qt-example提供的示例代码和API文档,开发者可以进一步开发出更加复杂和功能丰富的实时通信应用,满足不同领域的需求。 总之,webrtc-qt-example是一个基于Qt框架和WebRTC技术的示例应用,具备实时音视频通话、数据传输和屏幕共享等功能,适用于开发者学习、实践和开发基于WebRTC的实时通信应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值