Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VP9解码器技术方案调研 #34

Open
gnipbao opened this issue May 21, 2019 · 0 comments
Open

VP9解码器技术方案调研 #34

gnipbao opened this issue May 21, 2019 · 0 comments

Comments

@gnipbao
Copy link
Owner

gnipbao commented May 21, 2019

背景

自2003年以来,H.264一直是最先进并被最广泛部署的视频压缩格式,也催生了HDTV、蓝光DVD、互联网视频网站(如YouTube,Twitch)等许许多多成功的商业产品。但是目前基于H.264协议的编码器已经达到了它们压缩性能的极限。特别是对于高清分辨率(1080p60)游戏内容的实时编码,这些编码器已经江郎才尽,耗尽了所有可挖掘的技术潜力。然而与此同时,新涌现出的下一代视频标准,VP9,HEVC和AV1。本文主要介绍VP9相对H.264对比的可实施性。

概念

具体可以查看wiki

浏览器支持程度以及覆盖范围

safas5

许多浏览器都支持VP9视频格式,图中可以看出Chrome和Firefox的支持程度比较好。截止2018年6月,约有4/5的浏览器(包括移动设备)支持WebM封装容器和VP9视频编码,例如Chromium、Chrome、Microsoft Edge、Firefox、Opera等浏览器都内置了VP9解码器,可在HTML5播放器中播放VP9影像格式。Windows 10操作系统也内置了WebM分离器和VP9解码器。

VP9 vs h264 vs h265

性能对比

参考paper《Performance Comparison of H.265/MPEG-HEVC, VP9, andH.264/MPEG-AVC Encoders》

下表显示了HM的参数配置。

配置信息

下表显示了VP9和x264的参数配置。

vp9_h264

使用的测试序列如下表所示

test

实验结果如下图所示

xx

下表显示了HEVC在同等质量的前提下(以PSNR为依据),相对于VP9和x264节约的码率。下表显示了所有序列的情况。总体来说HEVC相对于VP9节约了41.9%,HEVC相对于x264节约了38.9%。

11

下表显示了三种编码器整体性能的比较。表中百分比数字的意义是:同等视频质量的前提下,该列所属的编码器相对于该行所属的编码器节约的码率,如果为负值,则代表反而消耗了更多的码率。例如,同等质量的前提下,x264相对于VP9节约了8.4%的码率。

22

同等视频质量的前提条件下,编码消耗时间对比如下表所示。可以看出,VP9编码时间大约是x264的130倍。HEVC编码时间大约是VP9的7倍。
33

压缩率

来源于大量视频数据测试

具体可以看 视频

基本上能得出:与x264相比,x265和vp9具有出色的压缩性能,特别是在更高的分辨率下,比特率节省高达50%。x265几乎在所有分辨率和质量指标上都优于vp9,但性能差距在1080p时缩小(甚至反正)

总体上来看vp9的优势有: vp9在编码效率方面优于x264 在1080p以上编码的压缩效率上可以实现至少25%的码率节省, 压缩性能更高,运作起来效率更高,比起x264要高出50%,用户使用原来一半的带宽就可以观看网络视频,没有专利费。

实现流式播放

1.播放格式

点播实现流式播放具体可以参考webm项目官方文档给出的4种格式。

2.MSE

MSE支持测试demo

3.其他

webm 没有ts类似.m3u8的描述文件需要自己实现。可参考youtobe方案

参考

http://en.wikipedia.org/wiki/VP9
https://www.texpion.com/2018/07/av1-vs-vp9-vs-avc-h264-vs-hevc-h265-1-lossless.html
https://blog.csdn.net/owen7500/article/details/47334929
https://blog.csdn.net/leixiaohua1020/article/details/11713041
https://blog.csdn.net/leixiaohua1020/article/details/19014955

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant