从前文我们知道,YUV420 已经比 YUV444 数据少了一半,而且体验几乎感受不到差别。如下:
从上图可以看到,虽然数据减少了一般,但是一张 1080p 的图片也有 3038kb 的大小,也就是 3Mb 大小,动画看起来流畅,需要一秒播放 24 张图片,1个小时的电影大小如下:3 *24 * 60 * 60 = 2592003∗24∗60∗60=259200因此,1小时的YUV420 的电影,需要 253G 空间来存储,截止 2022 年,一个普通的硬盘,才500G大小,只能存两部电影。所以 即使 YUV420 这种 HVS 技巧,已经让数据量少了一半,但是还是不能满足当前硬件环境的存储跟传输的需求,所以需要进一步压缩。
在音视频领域,压缩被称为 encode(编码),因为 压缩这个术语比较通用,字符串文本也能压缩,其他的二进制文件也能压缩。音视频里面的压缩算法 比较有行业自身的特点,所以叫 编码 。
常见的压缩标准有以下:
1,JPEG 标准,用于单张图片压缩。标准文档 ISO/IEC 10918-1
2,H.262 标准,用于视频编解码,标准文档 ISO/IEC 13818-2
3,H.263 标准,用于视频编解码。
4,H.264 标准,在 2022年 目前是应用非常广泛的标准。
5,VP9,Google 出的视频编解码标准。
6,AVS,中国的视频压缩标准。
视频编码系统中,用到的主流技术有以下:
1,预测
2,变换
3,量化
4,熵编码
5,环路滤波
上面的术语现在看不懂也没事,这里只是简单介绍一下,有个印象。因为本书的重点是讲解如何使用 FFmpeg 的 API。现在你只需要知道,YUV420 这些数据,进入 编码系统之后,从编码系统出了的数据会少很多,具体少多少,H264 的压缩比 可以是 102:1 ,也就是上面那个 253G 的YUV420电影,压缩之后只需 2.5G 存储空间。多么惊人的压缩比,这就是编码系统的魅力。
FFmpeg 初学者 不太需要 掌握 编解码的具体算法跟优化技巧。如果是小白,想入门音视频开发,首先要学会的是 调 FFmpeg 库的API,怎么调编解码的API。
至于具体的 H264,H265 编解码算法,可以等 FFmpeg 使用熟练了再去深入研究 。
参考文章:
1,JPEG - 维基百科