文/ Ullas Indi
译/ John
原文https://blog.hotstar.com/video-encoding-recipes-for-live-cricket-21f875080932
在最近结束的VIVOIPL 2018,我们尝试多种视频编码组合,来寻找可以使得用户即使在千万人同时观看的情况下也可以获得最佳的视频质量的合适的组合。 鉴于可用的带宽是有限的,在不牺牲用户体验的情况下有效地使用有限的带宽是至关重要的。
有限带宽
我们的大部分流量来自于在移动手机上浏览Hotstar的用户。 虽然情况正在好转,但是蜂窝体验必须依赖于不可靠并且随时变化的蜂窝移动网络。 除此之外,随着程序的发展,大量的用户会因为他们的每日FUP限制而遇到带宽上限。 这个smallpipe problem很好的解决了在现有的或者更低的比特率的情况下提供更好的视频质量的问题。
方法
我们的重点是创建一个为手机用户优化的比特率阶梯。 查看用于编码实施内容的视频编码设置和用于编码H.264/AVC的方法进入了我们的视线。
决策
优化编码参数引发了关于以合适的分辨率进行正确的混合编码的广泛讨论。 例如,在800kbps时,我们应该以360p,720p还是1080p进行流式传输? 可能看起来360p是最佳选择,但是如果用户选择在一个具有更高分辨率的屏幕上观看的时候,可能会由于在设备上的放大而导致缩放伪像,给用户带来较差的观感体验。 相反,如果我们以800kbps的速率使用1080p,我们可能会发现由于比特率不足而导致的很多编码伪像。
并非所有的视频内容都是一样复杂的,它们中的每一个可能都需要一个单独的比特率阶梯和基于内容复杂度的精细调整的编码方案。 我们从中获得了灵感,并且开始探索我们板球比赛的特征。
我们通过运用不同的比特率和分辨率对源内容进行编码来获得它的速率-失真曲线。 我们使用VMAF(VideoMulti-Method Assessment Fusion),一种由Netflix开发并作为开源提供的感知视频质量评估算法来测量这些编码视频的质量。 我们很好的调整了我们的实验来定位到移动设备受众。 以下是我们获得的比特率曲线。
横轴表示编码流的比特率,纵轴表示其VMAF分数。 VMAF值越高,视频质量越好。
从上图可以看出,对于以1080p分辨率编码的流,在比特率超过3000kbps之后基本上没有任何的增益。 同样,对于相同的流,在比特率低于2400kbps的时候它的视频质量低于同条件下的720p流。 这告诉我们每个分辨率都有最优质量的比特率范围和相比其它的分辨率不是那么出色的比特率范围。 如果我们要从所有分辨率中识别所有这些比特率范围,我们将获得理想的操作区域。
除了比特率-分辨率对之外,还有很多其他编码器设置可以控制输出视频质量,例如H.264配置文件,参考帧数,自适应量化等。 我们尝试了这些设置的不同组合来在我们的编码器中获得尽可能最优的输出,并且确定这些设置作为我们的微调编码方案。
为了确保与旧设备的向后兼容性,我们在不同比特率变体中囊括了编码器设置的微小变化。
A/B Test
由于这可能是一个能有巨大影响的发现,我们倾向于用A/B来测试我们的发现。 我们用我们的新发现创建了一个镜像编码工作流程,并且在我们的一小部分受众中进行了测试。 在这个过程中,我们观察了重新缓冲和平均比特率等关键指标对于与其他控制组相似的类似样本大小的影响。
由于我们也修改了编码器的设置,所以确保新的设置可以与所有支持的设备兼容来进行播放是另外一个重要的考虑因素。 我们必须要确保对于H.264配置文件或级别等编码参数的任何修改都不会影响到在任何支持设备上的播放。 我们在各种受支持设备的测试流设置过程中对此进行了验证。 在我们在实时设置的测试期间,我们监控了与测试组中的使用情况相关的关键指标。
结论
我们发现了在相似的比特率下,比原来的比特率阶梯有着更优的视频质量。 这意味着用户,比如说,在具有512kbps的互联网连接速度的Hotstar上观看流式传输的板球比赛,与具有旧比特率阶梯和编码器设置的视频相比,接收到质量提升很多的视频。
在原有的比特率阶梯条件下,全高清的1080p流需要用4500kbps的速率传输,但是在新的比特率阶梯的条件下,我们可以用仅仅3000kbps的速率来传输全高清的1080p流,这在不牺牲观感体验的条件下节省了接近33%的带宽!
我们密切监控各种参数,如重新缓冲率,总观看时间和用户参与度,编码阶段的延迟,消耗的流的平均比特率。 总的来说,我们观察到编码器中的重新缓冲率和延迟与旧的比特率阶梯相似。 我们还注意到相对观看时间的增加表明由于视频质量的提高,用户愿意用更多时间观看实时比赛。
下面的图片是我们内部测试期间捕获的屏幕截图。
第一个图像对应于旧编码,第二个图像对应于新编码,但与第一个编码的比特率相同。 通过我们的新编码,我们能够以与之前相同的比特率提供更高分辨率的视频,特别是对于较低范围的比特率。 最终结果是更好,更清晰的视频,如上面第二张图所示。
下面是另一组屏幕截图。
两种编码均为800kbps。 使用旧编码,我们以800kbps的速度提供360p,但是采用新编码我们能够以相同的比特率提供480p。
展望
虽然我们的重心是在为我们的实况板球比赛生成有效的传输阶梯,但是我们的工作也在继续调整所有的内容库的方案。 在我们的规模上,这些比特率节省对传输产生了重大影响,并且在提供更好质量的同时实现这一目标是最重要的!
————————————————
版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/100588869
「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。