关于ABR、CBR、VBR Twitch的工程师如是说

简介: 作者:Yueshi Shen翻译:AntTwitch发起了一项优化码率算法的项目,LiveVideoStack对原文进行的摘译,点击【阅读原文】访问英文连接。

作者:Yueshi Shen

翻译:Ant


Twitch发起了一项优化码率算法的项目,LiveVideoStack对原文进行的摘译,点击【阅读原文】访问英文连接。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


自适应码率(ABR)正在成为保证互联网直播、点播可靠性的重要技术之一。ABR视频流将内容切片成2-10秒的片段,每个片段都按照多个分辨率、码率进行编码(即有个视频轨)。


在客户端,播放器会监测用户当前的带宽,并选择一条最佳的视频轨进行回访,选择的策略要实现两个目标:


  • 通过下载最高码率的视频轨,实现最佳视频回放;

  • 保证回放的视频轨的码率低于当前的带宽,使得视频回放流畅(见图1)。


为了保证同时实现这两个目标,播放器需要知道每个视频轨片段的码率,才能决定下载哪个视频轨片段。因此,视频轨片段通常保持同样的大小(尽管HLS允许大10%),并告知播放器(播放器首先下载主manifest文件,它包含每个视频轨的码率信息)。


0?wx_fmt=png

图1:根据用户的带宽变化,播放可以从一个视频轨转换到另一个。


固定码率(CBR)编码采用时间等长的视频轨片段,这是一种简单且流行的保持视频轨片段大小相等的方式。不过,CBR限制了编码的效率,不能输出最佳的视频。另一方面,可变码率(VBR)编码能够输出更高质量的视频,降低码率。不过,VBR模式的视频轨切片大小是随机的,这会引发播放器缓存问题——由于不能预测切片的大小,将导致播放器不知道选择哪个视频轨下载。


有上限的VBR可以实现可用码率(ABR)视频流,在这种模式下码率是可变的(VBR),不过被限制在一个最大值(高于目标码率10%),虽然视频的质量没有纯粹的VBR高,但播放器可以预测下一个片段的大小。


为了让ABR保留VBR的优势,必须运行在纯粹的VBR模式下,保证每个视频流的切片大小一致,并且与目标码率相同(见图2)。


0?wx_fmt=png

图2:ABR-VBR是理想的模式,编码器在VBR模式下工作,并且切片大小一致。


目前在OTT行业,H.264/AVC是最流行的编码标准。大部分编码器是针对广播行业开发的,他们支持CBR或Statmux模式。虽然这些编码器也支持ABR,但OTT行业应用场景下并不能发挥VBR的优点。


Twitch团队一致致力于优化编码效率,并发起了一项公开的研究项目。任何开发者可以对码率算法进行优化,提升ABR-VBR的效率。


相关文章
|
7月前
对于工程师的一些理解
对于工程师的一些理解
68 0
|
9月前
|
机器学习/深度学习 安全 算法
某大厂安全工程师一面分享
某大厂安全工程师一面分享
58 0
|
11月前
|
存储 Java 程序员
「职业职位」软件“开发者”和“工程师”有什么区别?
「职业职位」软件“开发者”和“工程师”有什么区别?
|
程序员
你可能没发现你只是程序员不是工程师
你可能没发现你只是程序员不是工程师
88 0
你可能没发现你只是程序员不是工程师
|
前端开发 架构师 Java
1.5 从程序员到工程师
1.5 从程序员到工程师
|
机器学习/深度学习 供应链 前端开发
技术人的灵魂 3 问,阿里工程师如何解答?
在业务团队做事的工程师摸爬滚打了一段时间后,一定会有所疑问。团队同学在最初的一段时间都提出这样的疑惑:如何在业务中发现有技术价值的问题?发现问题后如何思考和发起再到解决?最后的技术结果跟业务结果如何衔接?很多时候我们听别人说“思考是不够的/要多思考”,其实都是在说这几点。接下来,阿里高级前端技术专家氐宿谈一谈遇到这三个问题时,他是如何解决的?
技术人的灵魂 3 问,阿里工程师如何解答?
|
SQL 安全 项目管理
这是一篇工程师对产品经理的吐槽
优秀的产品负责人拥有塑造产品愿景的天赋,但如果负责人在产品的初始构想阶段就没能与工程师有效沟通,结果只会浪费时间、机会和人才,这样下去最后可能会毁掉一个项目。
|
机器学习/深度学习 安全 Java
如何成为一个很厉害的工程师
如何成为一个很厉害的工程师
2181 1
|
前端开发
技术人的灵魂3问,阿里工程师如何解答?
阿里妹导读:在业务团队做事的工程师摸爬滚打了一段时间后,一定会有所疑问。团队同学在最初的一段时间都提出这样的疑惑:如何在业务中发现有技术价值的问题?发现问题后如何思考和发起再到解决?最后的技术结果跟业务结果如何衔接?很多时候我们听别人说“思考是不够的/要多思考”,其实都是在说这几点。
9475 0
|
程序员 Java 开发工具
阿里工程师谈,什么是好的代码?
我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来。显然,这个问题并没有唯一的标准答案,谁都可以谈论自己的理解,今天谈谈我对于好代码的理解。
7639 0
阿里工程师谈,什么是好的代码?

热门文章

最新文章