高级视频编码器性能对比(H265、VP9、AV1)

1、背景介绍

目前在视频编解码器中,H264已经成为绝对的主流,被大部分设备、浏览器所支持。虽然有更先进的编码器推出,但是受限于推广速度和设备支持成本,一直未能成为主流。

今年公司目标是持续降本增效,现在将"屠刀"指向了视频业务的存储成本。视频文件存储主要两块指标:存储本身和CDN资源。对于历史比较旧的数据会用更低成本的存储方式备份存储。目前主要想优化存储本身的成本。对存储成本影响最大的是文件大小,而对文件大小影响最大的是视频码率,我们想要降低文件大小就要降低视频码率,但是我们想要降低码率又不太影响视频观看质量怎么办?使用更先进的编码器。

2、编解码器对比

2.1 H264(AVC)

H.264在1997年ITU的视频编码专家组提出时被称为H.264,在ITU与ISO合作研究后被称为MPEG4 Part10或H.264。

虽然上述两个组织提出了H264编码规范,但是并没有具体实现。

2.2 H265(HEVC)

主要三个实现:

2.3 VP9

VP9也是google开源的用与比拼H265(HEVC)的编解码器,除了IE9以下版本的浏览器外,现代浏览器都支持VP9视频编码,软件实现:

2.4 AV1

AV1是Google VP10、Mozilla Daala以及Cisco Thor三款开源编码项目共同研发成果。AV1打破了之前编码标准中传统的二维运动矢量模型的限制,第一次引入了仿射变换运动模型,不仅可以描述平移运动,同时可以更好的表述如旋转、缩放等更加复杂的运动,有效的提升了视频编码效率。

在实际测试中,AV1比H265(HEVC)压缩率提升约27%,可以说是力压H265。是目前为止,世界上压缩性能最好的视频编解码器。再借用游戏界的话术来讲,那AV1就是"次世代"编解码器。

软件实现包含主要是FFmpeg的两个内置库:

3、兼容性介绍

在H264后推出的视频编解码器主要有:H265、VP9、AV1。

编解码器的普及上,编码一遍问题不大,兜底策略可以在应用中接入软编码器,主要是在浏览器中播放的兼容性上。我们先看看Chrome浏览器对解码器的支持:

  • VP8

  • VP9

  • AV1 [Only Chrome OS, Linux, macOS, and Windows at present]

  • Theora [Except on Android variants]

  • H.264 [Google Chrome only]

  • H.265 [Google Chrome only and only where supported by the underlying OS]

  • MPEG-4 [Google Chrome OS only]

H265、AV1不是所有所有场景都支持。

再看下Android平台对视频编码器的支持

H.263 对 H.263 的支持在 Android 7.0 及更高版本中并非必需 • 3GPP (.3gp) • MPEG-4 (.mp4)
H.264 AVC Baseline Profile (BP) • (Android 3.0 及更高版本) • 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS(.ts、仅限 AAC 音频、不可查找、Android 3.0 及更高版本)
H.264 AVC Main Profile (MP) • (Android 6.0 及更高版本) 解码器为必需项,编码器为推荐项。
H.265 HEVC • (Android 5.0 及更高版本) 适用于移动设备的 Main Profile Level 3 和适用于 Android TV 的 Main Profile Level 4.1 • MPEG-4 (.mp4)
MPEG-4 SP 3GPP (.3gp)
VP8 • (Android 4.3 及更高版本) • (Android 2.3.3 及更高版本) 只能在 Android 4.0 及更高版本中流式传输 WebM (.webm) • Matroska(.mkv、Android 4.0 及更高版本)
VP9 • (Android 4.4 及更高版本) WebM (.webm) • Matroska(.mkv、Android 4.0 及更高版本)

4、性能衡量指标

我们录制设备在电视上,编码性能太差,所以方案是H264编码后,再服务端后台进行AV1或H265转码。

涉及到了转码所以性能上我们考虑几个指标:

  • 转码实时率:专门1秒视频用多长时间,消耗多少CPU;

  • 编码效率:同样码率视频效果

5、总结

本文介绍了先进的视频编码器:H265、VP9、AV1的对比及软件实现。介绍了浏览器等平台对高级视频编码器的兼容性效果,以及编码器选型所要考虑的性能指标。

6、参考

相关推荐
tan180°2 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
哲科软件3 小时前
跨平台开发的抉择:Flutter vs 原生安卓(Kotlin)的优劣对比与选型建议
android·flutter·kotlin
彭祥.3 小时前
Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类
c++·opencv·分类
lzb_kkk3 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
胖大和尚5 小时前
clang 编译器怎么查看在编译过程中做了哪些优化
c++·clang
钱彬 (Qian Bin)6 小时前
一文掌握Qt Quick数字图像处理项目开发(基于Qt 6.9 C++和QML,代码开源)
c++·开源·qml·qt quick·qt6.9·数字图像处理项目·美观界面
双叶8367 小时前
(C++)学生管理系统(正式版)(map数组的应用)(string应用)(引用)(文件储存的应用)(C++教学)(C++项目)
c语言·开发语言·数据结构·c++
源代码•宸7 小时前
C++高频知识点(二)
开发语言·c++·经验分享
站在巨人肩膀上的码农8 小时前
全志T507 音频ALSA核心层注册流程分析
驱动开发·音视频·安卓·全志·alsa·声卡
jyan_敬言9 小时前
【C++】string类(二)相关接口介绍及其使用
android·开发语言·c++·青少年编程·visual studio