视频编码原理

vector6_ vector6_     2023-02-22     334

关键词:

视频编码原理

视频编码是对一帧帧图像来进行的。一般我们所熟知的彩色图像的格式是 RGB 的,即用红绿蓝三个分量的组合来表示所有颜色。但是,RGB 三个颜色是有相关性的,为了去掉这个相关性,减少需要编码的信息量,我们通常会把 RGB 转换成 YUV,也就是 1 个亮度分量和 2 个色度分量。另外,人眼对于亮度信息更加敏感,而对于色度信息稍弱,所以视频编码是将 Y 分量和 UV 分量分开来编码的。

而对于每一帧图像,又是划分成一个个块来进行编码的,这一个个块在 H264 中叫做宏块,而在 VP9、AV1 中称之为超级块,其实概念是一样的。宏块大小一般是 16x16(H264、VP8),32x32(H265、VP9),64x64(H265、VP9、AV1),128x128(AV1)这几种。这里提到的 H264、H265、VP8、VP9 和 AV1 都是市面上常见的编码标准。

图像一般都是有数据冗余的,主要包括以下 4 种:

  • 空间冗余。比如说将一帧图像划分成一个个 16x16 的块之后,相邻的块很多时候都有比较明显的相似性,这种就叫空间冗余。
  • 时间冗余。一个帧率为 25fps 的视频中前后两帧图像相差只有 40ms,两张图像的变化是比较小的,相似性很高,这种叫做时间冗余。
  • 视觉冗余。我们的眼睛是有视觉灵敏度这个东西的。人的眼睛对于图像中高频信息的敏感度是小于低频信息的。有的时候去除图像中的一些高频信息,人眼看起来跟不去除高频信息差别不大,这种叫做视觉冗余。
  • 信息熵冗余。我们一般会使用 Zip 等压缩工具去压缩文件,将文件大小减小,这个对于图像来说也是可以做的,这种冗余叫做信息熵冗余。

视频编码简单来说就是为了能够在最后熵编码的时候压缩率更高,我们希望送到熵编码(以行程编码为例)的“像素串”,是一串含有很多 0,并且最好连续为 0 的“像素串”。

为了达到这个目标,我们先通过帧内预测或者帧间预测去除空间冗余和时间冗余,从而得到一个像素值相比编码块小很多的残差块。之后我们再通过 DCT 变换将低频和高频信息分离开来得到变换块,然后再对变换块的系数做量化。由于高频系数通常比较小,很容易量化为 0,同时人眼对高频信息不太敏感,这样我们就得到了一串含有很多个 0,大多数情况下是一串含有连续 0 的“像素串”,并且人的观感还不会太明显。这样,最后熵编码就能把图像压缩成比较小的数据,以此达到视频压缩的目的。这就是视频编码的原理。

现在市面上常见的编码标准有 H264、H265、VP8、VP9 和 AV1。目前 H264 和 VP8 是最常用的编码标准,且两者的标准非常相似。H265 和 VP9 分别是他们的下一代编码标准,这两个标准也非常相似。AV1 是 VP9 的下一代编码标准。目前普通产品还是使用 H264 最多,而 H265 因为专利费使用得比较少。VP8 是 WebRTC 默认的编码标准,且 WebRTC 使用 VP8 最多。同时,WebRTC 也支持 VP9 和 AV1。YouTube 使用了 VP9 和 AV1。Netflix 也使用了 AV1。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M4qO9zbf-1651409352822)(E:\\博客图片\\编码标准.webp)]

从上面表格中可以看到,标准越新,最大编码块就越大,块划分的方式也越多,编码模式也就越多。因此压缩效率也会越高,但是带来的编码耗时也越大。所以在选择编码器的时候需要根据自己的实际应用场景来选择,同时还需要考虑专利费的问题。还有一个就是考虑有没有硬件支持的问题。目前 H264 和 H265 的硬件支持已经很好了,AV1 才刚开始,硬件支持较少,之后会有更多硬编硬件支持。

一般相同码率下,AV1 清晰度稍好于 H265,而 H264 最差,但是编码耗时则相反,AV1 最高,H265 次之,H264 速度最快。

所以,如果是在性能比较差的机器上编码,最好使用 H264 和 VP8 等速度快的编码器。如果是在比较新的机器上,可以考虑 H265 编码。中等机器如果支持 H265 硬编也是可以考虑的。但有一个问题就是 H265 需要考虑专利费的问题,同时浏览器原生不支持 H265 编码,所以有这方面需求的,最好不要使用 H265,可以考虑使用 VP9,甚至可以考虑 AV1。另外,由于 AV1 原生标准就支持屏幕编码的优化,所以屏幕编码场景下可以考虑使用 AV1 编码。

rk3568平台开发系列讲解(视频篇)视频编码的工作原理

查看详情

解析视频编码原理——从孙艺珍的电影说起

更多博文,请看音视频系统学习的浪漫马车之总目录视频理论基础:视频基础知识扫盲音视频开发基础知识之YUV颜色编码解析视频编码原理——从孙艺珍的电影说起(一)解析视频编码原理——从孙艺珍的电影说... 查看详情

视频压缩编码和音频压缩编码基本原理

1.视频编码基本原理(1)视频信号的冗余信息以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信... 查看详情

android音视频开发之音视频编码原理

一、前言在上一篇Android音视频开发之音视频基础知识文章中,我们学习了播放一个视频的流程:解协议、解封装、解码、音视频同步、音视频数据的渲染;其中解码是非常关键的一步,那为什么要进行解码,所谓... 查看详情

解析视频编码原理——从孙艺珍的电影说起

更多博文,请看音视频系统学习的浪漫马车之总目录视频理论基础:视频基础知识扫盲音视频开发基础知识之YUV颜色编码解析视频编码原理——从孙艺珍的电影说起(一)解析视频编码原理——从孙艺珍的电影说... 查看详情

android音视频编解码--视频编码和h264格式原理讲解

Android音视频编解码(一)–MediaCodec初探Android音视频编解码(二)–MediaCodec解码(同步和异步)前面学习了MediaCodec的基本原理,以及如何解码,在学习MediaCodec编码之前,先来学习视频是如何编码的,以及最常用的H264。这... 查看详情

音视频开发——图像压缩编码的原理

...里以24bit的RGB图像举例,也就是一个像素占3个字节。视频是一帧一帧的图像组成,假设现在的视频分辨率是1080p,帧率是15帧每秒。每秒需要的带宽就是1920x1080x3x15/1024/1024=89M/s,现在安装100M的宽带网速也就几M 查看详情

解析视频编码原理——从孙艺珍的电影说起

更多博文,请看音视频系统学习的浪漫马车之总目录视频理论基础:视频基础知识扫盲音视频开发基础知识之YUV颜色编码解析视频编码原理——从孙艺珍的电影说起(一)解析视频编码原理——从孙艺珍的电影说... 查看详情

解析视频编码原理——从孙艺珍的电影说起

更多博文,请看音视频系统学习的浪漫马车之总目录视频理论基础:视频基础知识扫盲音视频开发基础知识之YUV颜色编码解析视频编码原理——从孙艺珍的电影说起(一)解析视频编码原理——从孙艺珍的电影说... 查看详情

音视频-视频编码原理

目录视频编码主要分为图像的冗余熵编码帧内预测帧间预测DCT变换和量化编码器比较清晰度和耗时对比        一部电影1080P,帧率25fps,时长2小时,文件大小1920x1080x1.5x25x2x360=521.4G数据量非常大,对存储和... 查看详情

android音视频编解码--视频编码和h264格式原理讲解

Android音视频编解码(一)–MediaCodec初探Android音视频编解码(二)–MediaCodec解码(同步和异步)前面学习了MediaCodec的基本原理,以及如何解码,在学习MediaCodec编码之前,先来学习视频是如何编码的,以及最常用的H264。这... 查看详情

h.264/avc视频编解码技术具体解释十熵编码算法:cavlc原理

《H.264/AVC视频编解码技术具体解释》视频教程已经在“CSDN学院”上线。视频中详述了H.264的背景、标准协议和实现,并通过一个实战project的形式对H.264的标准进行解析和实现,欢迎观看!“纸上得来终觉浅,绝知此事要躬行”。... 查看详情

视频编码原理及gstreamer硬编码代码实现(代码片段)

...细介绍。这里记录下自己的实现,附完整代码。一、视频编码基础知识像素点的英文叫Pixel(缩写为PX)。Pixel是由Picture(图像)和Element(元素)这两个单词简化而来。像素是图像显示的基本单位。我们通常说一幅图片的大小,例... 查看详情

h.264/avc视频编解码技术详解二十三帧间预测编码:帧间预测编码的基本原理(代码片段)

《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!“纸上得来终觉浅,绝知此... 查看详情

h.265视频编码原理总结

H.265视频编码原理总结转载地址1概述H.265(HEVCHighEfficiencyVideoCoding)是现行H.264标准于2003年实现标准化以来时隔10年推出的新标准,将成为支撑未来十年的影像服务和产品的视频压缩技术。其特点是,支持1080p以上... 查看详情

h.264/avc视频编解码技术详解二十三帧间预测编码:帧间预测编码的基本原理(代码片段)

《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!“纸上得来终觉浅,绝知此... 查看详情

h.264/avc视频编解码技术详解十八:算术编码的基本原理与实现(代码片段)

《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!“纸上得来终觉浅,绝知此... 查看详情

android主流视频播放及缓存实现原理调研

参考技术A本文针对视频播放及缓存方案进行调研,对于Android端常用的视频播放器的缓存策略介绍及实现原理。实现简单,逻辑易懂。在播放器与视频源服务器之间加了一层代理服务器,截取视频播放器发送的请求,根据截取的... 查看详情