原文文档: webrtcH4cKs: Chrome's webrtc vp9 svc layer
很明显的分层特征
svc编码的层可以删除其中不被选中的层, 且不破坏其他流的可读性.
-
单一流中可以被拆分出多种码流大小的流, 有利于sfu做带宽范围可选的码流分发.
-
优点: 适应更多的下行网络场景, 大大减轻sfu的压力和复杂度, 对比simulcast分层技术, 不需要额外的上行冗余和cpu消耗.
-
缺点: 对编码器增加多余的消耗
svc分类:
-
Temporal 时域分层- 帧率拆分
-
Spatial 空域分层- 分辨率拆分
-
Quality 质量分层- 编码质量拆分
VP9 svc技术的特点:
-
空域分层技术可以不降分辨率从而降质量, 对于vp9来说, svc可以把空域分层和质量分层统一说明为空域分层
-
可以同时进行时域分层和空域分层编码(如果不能动态控制空域层的占比, 码率冗余会变得非常大) TODO: 理想的分层编码, 最大质量是可以利用所有层的, 不像simulcast技术, 分辨率拆分后不能相互叠加质量
- 参考方式 image
待需要解决的问题:
-
决定合适数量的s(分辨率)数量和t(时域层数)数量, 或者提供api去进行配置
-
提供一个方式去开启或者关闭svc, 当一对一的时候, 就不需要开启svc了
-
去噪??
-
cpu使用会很高, 可以添加接口获取cpu使用量, 然后按照cpu使用动态调节输出的编码质量. 或者降低分辨率
测试结果:
从结果看来, 码控并不很稳定....波动还是比较大的...
image总结:
整体来说, 这篇文章介绍了vp9里面svc的相关实现和原理, 及测试结果, 从结果来看效果是非常好的, 直接就一路流做到了之前两路simulcast + svc才能做到的事情, 很棒, 很有借鉴价值.
缺少些什么:
-
文中的二维svc和simulcast的对比
-
二维svc对比一维svc增加了多少性能消耗
-
编码出来的图像质量对比啊之类的
-
是否可以替代传统的simulcast, 以及还差哪些
-
超级帧的大小比传统的关键帧大了多少啊之类的
-
gop间隔可以设置到多少啊之类的
-
是否支持码率控制,以及控制的类型啊之类的, 比如 cbr, abr, crf之类的码控方式
网友评论