近日,在 WebRTC 讨论组中,开发人员 Henrik Boström 表示可以通过指定 scalabilityMode 和 scaleResolutionDownBy 来选择加入 VP9/AV1 联播,并且将试验VP9/AV1 联播的新比特率分配策略。
PSA
该规范和实现支持用 addTransceiver() 或 SDP 中的多个 ssrc 来配置多个编码,在协商后,RTCRtpSender.getParameters()+setParameters()可以用来设置哪些编码是激活或不激活的,而不需要重新协商。
- 多年来,多种编码使VP8和H264能够支持联播。
根据该标准,这应该适用于任何编解码器,包括VP9和AV1也是如此。但由于历史原因和以前缺乏通过API控制空间层数量的能力,VP9和AV1被区别对待了。VP9/AV1没有把多个编码解释为多个编码,而是把它解释为 “多个空间层”。由于这个原因,VP9/AV1联播是不可能的。
这种情况在M113中有所改变,现在可以进行VP9/AV1同步广播:请看这个在最新的 Canary 上的 demo。
- 由于向后兼容的原因,只有当你同时指定 scalabilityMode 和 scaleResolutionDownBy 值时,你才能得到标准行为。这被认为是 “选择加入 “新的标准API路径的方式。
如果你不指定这些参数,当你有多种编码时,你仍然会得到 “传统的SVC模式”–例如,见这个例子,传统模式可以通过进入chrome://webrtc-internals/来确认,在那里你可以看到一个具有 scalabilityMode 的 “outbound-rtp”: L3T3_KEY。
- 在传统模式下,停用编码将停用空间层。在标准模式下,活动参数指的是整个编码。如果要在标准模式下禁用空间层,则需要为活动编码更改为不同的 scalabilityMode/scaleResolutionDownBy。
未来的里程碑
请注意,在接下来的里程碑中,我们将继续调整新的 VP9/AV1 联播路径。最值得注意的是,联播和SVC的比特率分配有很大的区别。我们将尝试使 VP9 联播比特率与 VP9 SVC 的比特率更接近一致。
当第一个编码是唯一的活动编码时,今天的实现支持许多不同的 scalabilityMode 值。对于多个活动编码(联播),只支持L1T1、L1T2和L1T3,所有的编码都必须使用相同的值。不支持的配置将触发回退到支持的配置,如L1T2。参见 getParameters() 和 getStats() 了解情况。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/21045.html