Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VP9编码:迄今的尝试

VP9编码:迄今的尝试

作者头像
LiveVideoStack
发布于 2021-03-26 06:51:30
发布于 2021-03-26 06:51:30
2K0
举报
文章被收录于专栏:音视频技术音视频技术

对VP9编码的探索我们从未停歇。

文 / 常谦

原文链接 / https://blog.hotstar.com/vp9-encoding-journey-so-far-e1153ab488db

两年前,我们开始在点播内容中使用VP9编码,并且观察到它在视频质量和码率这两方面比H264有明显的提升。但与此同时,我们也遇到了一些挑战,今天在这里跟大家讨论一下。

探索

我们使用的VP9编码器是libvpx。在新的编码服务上线一段时间后,我们发现通过添加一些特征保留过滤器,视频主观质量变化不大却能编压缩得更小一些,。让我们在分发一些流行节目分发中时明显地节省带宽成本。

我们还发现,一些VP9编码的内容在某些具有高动态场景和黑暗场景的内容上效果不尽如人意,因此我们决定暂停这类内容的VP9编码。然后我们发现在某些内容的mpd文件中,240p分辨率的峰值码率高于360p分辨率。由于上述问题,我们暂停了VP9编码,并更深入地进行了分析和调查。最后,我们提出了VP9编码的改善方案。

编码

在这一部分中,我们将讨论两个在网络论坛上不常讨论的问题:2pass码率控制和多线程编码速度瓶颈。

码率控制方式

与x264类似,libvpx有1pass ABR,稳定质量,2pass ABR和带码率限制的稳定质量码控方法。

libvpx码率控制方法

在x264编码中,经常会使用带峰值码率限制的CRF。而在libvpx CRF模式下,编码器会尝试达到稳定图像质量,同时将平均比特率保持在比特率限制限制在目标值以下。

这与x264 CRF的速率码率控制方法不同。在x264中,我们可以使用VBV bufferVBV maxrate实现编码输出码率峰值码率的控制,从而可以直观地调节设置DASH mpd文件中各分辨率的峰值码率高低。但是在libvpx CRF模式下没有这些选项,仅可以限制输出的平均码率,所以这意味着DashDASH mpd文件中各分辨率峰值码率是不确定的。在HLS/DashDASH自适应码率切换中,峰值码率是重要的参考依据。高分辨率视频峰值码率越高,其播放的频率越低少。

另一件很少被提及的事情是,我们可以在CRF编码中使用2pass。由于1pass CRF在x264中得到了广泛使用,因此一开始我们并没有尝试在libvpx中使用2pass CRF。然而,2pass CRF在libvpx中的性能比1pass CRF好得多。它可以提高某些复杂场景的质量。我们将在稍后讨论细节。

多线程编码速度

对于VOD编码来说,我们倾向于使用慢速设置的方式slow preset以获得更好的质量和更小的体积。在x264 / x265中,我们可以使用10个或更多线程来加速1080p视频的编码。但是,我们不能无法在libvpx中使用那么多线程,而且在slowpreset预设下,1080p VP9编码时间比x264长得多。

经过一些了解后,我们发现libvpx可以使用的最大线程数与tile数量有关。最大tile数又取决于分辨率。下表显示了各分辨率的最大tile。

VP9各分辨率的最大tile

对于1080p内容,图像视频宽度为1920像素,最大tile仅为4。因此libvpx1080p的编码速度成为了我们VOD服务的瓶颈。幸运的是,libvpx v1.7中引入了-row-mt选项,较之前版本有较大提升。但是对于需要快速上线的视频内容来说,libvpx仍然不能满足我们的要求,因此我们需要GOP级别并行化来进一步加速。

Packaging HLS/DashDASH打包

选择Bento4还是Shaka打包?

Bento4用作H264 / H265 的HLS / DASH打包中非常流行。但对于VP9来说,我们还有一个选择:Shaka Packager。在选择之初我们进行了一些调研,在Bento4官方讨论中,其开发人员提到Bento4专注于基于ISO标准的各类流格式,而Webm不属于这一类。此外,我们尝试Bento4生成一些VP9 + AAC流,却无法在我们的Chrome浏览器中正常播放和运行。相反,Shaka Packager可以涵盖我们所有的使用场景。因此,我们决定在VP9打包封装中使用Shaka Packager。

Shaka Packager可以输出VP9 + AAC编码的fMP4 DASH流和VP9 + Opus编码的Webm DASH流。它也可以很好地支持AV1 + AAC和AV1 + Opus。

在默认情况下,Shaka Packager还会启用动态MPD。它可以大大提高客户端下载和CDN上传的速度,从而使我们的文件管理更容易。

Webm还是fMP4?

如上所述,我们可以将Webm或fMP4用于VP9视频。不幸的是,根据Shaka Packager官方文档,Opus对ISO-BMFF的支持仍处于试验阶段。所以一开始我们选择了带有VP9+Opus编解码器的Webm容器。在发布几个月后,我们分析发现,相对于H264节省的总流量是低于我们的预期的。

Shaka Packager支持的容器格式和编码

经过实验,我们发现Webm容器封装后产生了大约20–30kbps的开销。这对于高分辨率视频影响不大。但是对于180p视频,如果音视频的比特流为100kbps,则转换为fMP4 DASH格式后的大小约为102kbps。但是,当我们将其转换为Webm DASH格式时,它的大小约为120–130kbps。Webm容器中的开销多了约为20kbps,对于低分辨率内容来说还是太大。因此,我们决定在未来使用fMP4容器。

将fMP4容器与VP9 + AAC编解码器一起使用的另一个优点是易于维护多种编码格式的视频。我们通常会先为每个内容编一份H264+AAC的流,如果VP9也适用AAC编码,我们直接可以把已编好流的AAC音轨复制或链接到VP9 MPD文件,而无需重新编码音频。每次我们收到某个一种内容的新语言音频时,我们只需要处理一次(AAC,fMP4)并将该音轨复制或链接到多个视频格式的流 (H264/H265/VP9) 中。这样我们并不需要考虑其他音频编码(Opus)格式的处理。

我们的改进

回到前面的问题,之前我们发现某些MPD文件中360p峰值码率值低于240p。这对播放行为造成了流干扰,导致以致当网络变好时候,某些用户反而从360p切回240p。此外,之前的VP9编码在某些一些复杂场景下的图像质量较差不理想。经过一些实验,我们发现在上述情况下2pass CRF的表现比1pass CRF好得多。

下图是我们对同一视频进行2pass CRF与1pass CRFVP9编码的比较。它们使用相同的CRF值和码率限值。我们可以看到1pass CRF的MPD峰值码率依次为350kbps、500kbps、450kbps、650kbps,在240p附近出现了一个异常点。相反,2pass CRF MPD峰值码率随着分辨率单调增加,是合理的。

DASH文件中各分辨率峰值码率(kbps)

我们还计算了2pass CRF和1pass CRF输出的VMAF值。对比结果如下:

从以上数据可以看出,2pass CRF在输出质量上更稳定,在复杂场景下表现更好。

VP9真的过时了吗?

人们可能会说,我们已经有了HEVC和AV1编解码器,为什么我们还需要VP9,是不是已经过时了?除了节省成本外,VP9目前至少还具有以下优点。

首先,Chrome类浏览器不支持HEVC解码,而VP9内容视频可以通过使用硬件加速在一些主流设备上播放。

其次,HEVC和AV1内容在一些低端Android设备上无法很好地播放。对于1080p+或胶片噪声视频,VP9的性能接近HEVC,。在某些情况下,VP9的性能有时甚至优于HEVC。

最后,VP9的当前编码成本比AV1低得多。与AV1相比,VP9可以节省很多编码时间和计算成本。对于观看时间不长的视频,AV1多码率编码带来的成本增加可能会比AV1其节省的流量费用还要多。在这种情况下,VP9可能是更好的选择。

总结

在此博客中,我们带领您体会分享了我们从VP9入门到现在的过程,介绍了我们遇到的挑战以及为改善最终用户体验而开发的解决方案。就像我们在Hotstar所做的一切一样,这些学习经验成果正在被应用借鉴到我们其他视频编解码器,平台和场景中。

我们的团队一直在探索新的创新方式,以不断提高我们在音频、视频处理和交付各个方面的性能和效率。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
透过 Top 500 美拍短视频看 AV1 性能
AV1 以其出色的压缩性能,无疑是自 2017 年以来备受关注的新生代视频编码标准。业界也相继对 AV1 进行了一些评测工作,如 Facebook、Netflix 对它的编码复杂度也从早期的 VP9 的近千倍降到了百倍。为了验证 AV1 在短视频上的性能,美图音视频团队自 2018 年 11 月,基于 Top 500 美拍短视频进行了一次全面的 AV1 性能评估,对标编码器采用在实际生成环境中使用的主流视频编码器 x264、x265、VP9。
LiveVideoStack
2019/07/01
1.3K0
透过 Top 500 美拍短视频看 AV1 性能
Facebook:AV1比x264和libvpx-VP9提升至少30%
改进视频压缩对于更敏捷、更高质量地传输视频文件非常重要,同时使用更少的带宽和存储空间。从4K流媒体传输到智能手机的视频聊天及笔记本电脑的屏幕共享一切都可以通过更强质量更小的压缩编码视频。
LiveVideoStack
2021/09/01
7910
视频码控:CBR、VBR和ABR
无论是查线上一些花屏、卡顿,马赛克问题,还是进行码率自适应的功能开发,抑或进行客户端播放器的JitterBuffer的优化,都需要编码器发送端的配合。我们需要在编码速度、网络带宽,视频质量方面做一个权衡,进而选择更符合场景的码控调整方案,同时目前比较热门的ROI编码,编码场景的自适应学习都跟这部分内容有关系。本文介绍下常见视频编码器码率控制方案,具体的编码器可能在实现和使用上有所差异,具体在调用API和阅读源码时需要进行进一步分析和了解。
视界音你而不同
2020/09/15
3.6K0
使用基于分层深度学习的分块预测加速VP9帧内编码
本文是来自AOMedia 2019 Research Symposium的演讲,演讲者是来自得克萨斯大学奥斯汀分校的Somdyuti Paul,题目是”Speeding up VP9 IntraEncoder with Hierarchical Deep Learning Based Partition Prediction”,主题是使用基于分层深度学习的分块预测加速VP9帧内编码。
用户1324186
2019/12/23
7370
使用基于分层深度学习的分块预测加速VP9帧内编码
Twitch未来五年的视频编码战略:从H.264到 AV1
今年的NAB2019上,资深编解码技术专家Jan Ozer采访了Twitch的首席研发工程师沈悦时博士,沈博士从编解码器的角度讨论了Twitch对于视频新技术的实践与探索,同时介绍了Twitch未来五年在流媒体技术战略方面的布局。他认为,五年后Twitch的头部以及尾部内容将100%使用AV1编码。 文 / Jan Ozer 译 / 郭俊翔 原文 https://www.streamingmedia.com/Articles/Editorial/Featured-Articles/NAB-2019-Twit
LiveVideoStack
2019/07/01
1.5K0
视频编码标准和FB的提升工作
本文来自Video Scale 2020,演讲者是来自Facebook的研究科学家Ioannis Katsavounidis。演讲题目是视频编码标准和FB的提升工作。演讲分为如下几个部分。
用户1324186
2020/12/28
9180
视频编码标准和FB的提升工作
Shaka Streamer:直播/点播内容准备工具
本文是来自Seattle Video Tech的演讲,讲者是来自于Google公司的Joey Parrish。使用ffmpeg来准备视频内容需要写出冗长的难以理解的脚本,本次演讲介绍了Shaka Streamer这一开源工具来简化配置。
用户1324186
2020/03/06
1.1K0
Easy Tech:什么是MPEG-DASH协议
点击上方“LiveVideoStack”关注我们 翻译 | Alex 技术审校 | 赵军 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 MPEG-DASH Easy Tech #014# MPEG-DASH是最流行的视频流协议之一,它广泛用于点播和直播,将媒体传输给各种终端设备,包括手机、平板、智能电视、游戏机等。MPEG-DASH是一种基于HTTP的流媒体传输协议,负责将视频从HTTP服务器传输给终端用户。在MPEG-DASH中,一个视频被分割成许多切片,这一信息被一个
LiveVideoStack
2022/03/04
2.3K0
FFmpeg 视频处理入门教程
它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。
ruanyf
2020/02/13
2.6K0
HLS 和 DASH 多编解码器和封装
FuboTV 是一家美国流媒体电视服务公司,为美国、加拿大和西班牙的客户提供服务,主要专注于分发体育直播的频道。根据国家/地区的不同,Fubo 提供的频道可能包括访问 NFL、MLB、NBA、NHL、MLS、CPL 和国际足球,以及新闻、网络电视连续剧和电影。
用户1324186
2021/12/22
2.3K0
HLS 和 DASH 多编解码器和封装
结合微帧编码引擎,从视频编解码角度对Sora浅析
要问2024开年什么东西最火,那一定是OpenAI发布的轰动全球的视频生成模型——Sora,与之前的视频生成模型相比,Sora的特点是能够生成长达1分钟的视频,同时保持高视觉质量和视觉一致性,这无疑是生成式AI的一项重大突破,OpenAI亦表示,Sora是能够理解和模拟现实世界的模型的基础,这一能力将是实现AGI(通用人工智能)的重要里程碑。
微帧Visionular
2024/10/29
1730
结合微帧编码引擎,从视频编解码角度对Sora浅析
腾讯云直播+点播全线产品支持AV1,带来极致视频体验
日前,腾讯视频云直播、点播、媒体处理全线产品均已支持AV1标准,据悉,腾讯云也是国内首家直播+点播同时支持AV1视频处理业务的公有云厂商。 据悉,AV1(Alliance for Open Media Video 1)是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源、免版权费的视频编码格式,目标是解决H265昂贵的专利费用和复杂的专利授权问题并成为新一代领先的免版权费的编码标准。 而在今年10月,腾讯已正式加入开放媒体联盟(Alliance for Open Med
腾讯云音视频
2019/12/17
2.7K0
腾讯云直播+点播全线产品支持AV1,带来极致视频体验
原来爱优腾等视频网站都是用这个来播放流媒体的
HLS (HTTP Live Streaming) 是苹果公司开发的流媒体传输协议,它使用 HTTP 来传输视频,可以防止被防火墙屏蔽。现在大部分视频网站都在使用,比如优酷、腾讯视频。
lcyw
2022/11/23
2K0
原来爱优腾等视频网站都是用这个来播放流媒体的
音视频开发入门_视频制作基础知识
音视频涉及语音信号处理、数字图像处理、信息论、封装格式、编解码、流媒体协议、网络传输、渲染、算法等。在现实生活中,音视频扮演着越来越重要的角色,比如视频会议、直播、短视频、播放器、语音聊天等。因此,从事音视频是一件比较有意义的事情,机遇与挑战并存。本文将从几个维度进行介绍:音视频开发基础、音视频进阶成长、音视频工作方向、音视频开源库、流媒体协议与书籍。
全栈程序员站长
2022/10/02
3.3K0
音视频开发入门_视频制作基础知识
流媒体视频基础 MSE 入门 & FFmpeg 制作视频预览缩略图和 fmp4
这是弹幕播放器系列文章第二篇,上篇请查看 从零开发弹幕视频播放器1。下篇请查看 原来爱优腾等视频网站都是用这个来播放流媒体的 播放器官网:https://nplayer.js.org/ 。
羽月
2022/10/09
2.1K0
流媒体视频基础 MSE 入门 & FFmpeg 制作视频预览缩略图和 fmp4
基于 SVT-AV1 的高效视频点播应用解决方案
SVT-AV1 在 2020年 8月已经被 AOM Sorftware Implementation Working Group (SIWG) 采用为参考软件,并且已经开源。
用户1324186
2021/12/27
1.7K0
基于 SVT-AV1 的高效视频点播应用解决方案
Ittiam优化VP9,turnaround时间大幅减少
libvpx是Google开发的视频编解码器VP8和VP9的开源软件实现库。libvpx中包含了VP9视频编码算法,相比H.264/AVC,在高质量配置的2 pass编码模式下能提供40%多的 BD-rate增益。这使得libvpx(VP9)在OTT(Over The Top)视频传输服务中潜力巨大。 然而,与H.264/AVC编码器相比,libvpx编码速度较慢,会产生较长的turnaround时间。例如,使用libvpx 1.6.0版本,’good’-CPU-used
用户1324186
2018/03/05
1.8K0
Ittiam优化VP9,turnaround时间大幅减少
如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)
 点击上方“LiveVideoStack”关注我们 翻译、编辑:Alex 技术审校:刘歧 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 FFmpeg Easy-Tech #021# 在本篇文章中,我们将学习如何使用FFmpeg把视频从AVI格式转换为MP4格式(在重新/不重新编码AVI文件的情况下)。作为红利,我们还将学习FFmpeg在Ubuntu、Mac和Windows上的安装,并使用FFmpeg将
LiveVideoStack
2022/04/18
9.5K0
如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)
VP9与H.265的6个不同点
先来了解一下视频在互联网上传输需要经历哪些环节。它必须先使用麦克风和摄像机捕捉音频与视频。然后,原始数据必须压缩(编码)到编解码器中,通过互联网连接(使用传输协议)广播,发送到某种服务器端解决方案(server-side solution)(通常是CDN或一个基于云的集群(cloud-based cluster),如Red5 Pro),然后解压(解码),最终供用户观看视频。
LiveVideoStack
2020/09/24
2.6K0
如何使用下一代编码技术提升流媒体体验
读者们好,今天我将使用本公司Bitmovin与Hulu合作的案例,探讨Multi-Codec Streaming, 3-pass和Per-Title encoding技术。
LiveVideoStack
2019/12/30
1K0
如何使用下一代编码技术提升流媒体体验
推荐阅读
相关推荐
透过 Top 500 美拍短视频看 AV1 性能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档