定义
H.264,也称为高级视频编码或MPEG-4 Part 10,是基于面向块的运动补偿编码的视频压缩标准。H.264将数字视频转换为占用非常少存储空间的格式。这使得通过互联网流式传输,播放和传输视频变得更加容易。H.264定义了各种配置文件(工具)和级别(最大分辨率和比特率) - 我们将在本文后面更深入地介绍这一点。H.264 压缩支持高达 8K 超高清的数字视频。
H.264编解码器由MPEG(运动图像专家组)和ITU(国际电信部门)共同开发。许多著名的供应商在他们自己的编解码器版本中使用 H.264 - 如 Apple 编解码器、MainConcept 编解码器、x264 编解码器等。
h.264 编解码器如何工作?
基于H.264标准的视频编解码器,压缩数字视频流,使其仅适合MPEG-2(H.262)标准的一半带宽或存储空间。使用H.264压缩,编解码器可以保持视频质量不变,而不会影响任何内容,同时将所需空间减少到原始空间的一半。H.264 视频编码器执行三个重要过程 - 预测、转换和编码 - 以提供压缩的 H.264 比特流。然后,解码器执行互补过程 - 解码,逆变换和重建 - 以产生解码的视频流。让我们详细看看H.264编码器过程:
预测: 编码器处理宏块(16x16 显示像素)的视频单元帧。这形成了基于先前编码数据的宏块预测 - 来自当前帧(内部预测)或来自先前编码和传输帧(内部预测)。编码器提取预测并形成残差。
转换和量化: 残差样本块使用离散余弦变换或 8x8 或 4x4 整数变换的近似形式进行变换。这将输出一组系数,每个系数都与标准基态的权重值相关。这些基础模式可以组合在一起,以重新创建残余样品的初始块。该输出被量化,即每个系数除以一个整数值。这样做的目的是生成一个块,其中大多数或所有系数为零,非零系数很少。
比特流编码: 以前生成的所有值现在都需要编码。这些值包括 - 量化系数、解码器用于重新创建预测的信息、有关压缩数据结构和所用压缩工具的信息,以及有关整个视频序列的信息。这些值和参数使用算术编码或可变长度编码进行编码,以生成初始信息的紧凑二进制信息。然后,根据要求存储或传输此比特流。
另一方面,解码器通过以下方式补充编码器的步骤:
比特流解码: 解码器接收压缩的比特流并解码每个语法元素。然后,它提取上述信息。这就是编码过程的反向发生方式,并重新创建一系列视频图像。
重新缩放和反向转换: 量化系数通过乘以整数值来重新缩放,以恢复初始缩放。此过程有助于重新创建残差数据的每个块,然后将其组合以形成宏块。
重建: 对于每个宏块,解码器形成编码器最初创建的宏块的最准确预测。解码器将此预测添加到解码的残差中。这导致重建解码的宏块,然后将其显示为视频帧的片段。
H.264 / AVC概述
H.264通常被称为AVC - 高级视频编码的缩写,也称为MPEG-4第10部分。H.264编码标准由ISO/IEC和ITU-T这两个标准国际机构创建。它于2003年首次出版,作为题为“建议H.264:高级视频编码”的文件的一部分。以下是 H.264 的一些功能和其他基本概述。
特征
H.264 压缩将视频容器的大小减小到原始容器的一半左右。在此过程中,基于H.264的编解码器不会在任何质量上妥协。就使其能够执行此壮举的功能而言,以下是一些功能:
切片结构编码: Slice可以理解为一个特定切片组中的宏块数组。它们在视频数据中提供不同的重新同步点,并确保切片边界上不会发生帧内预测。此功能使 H.264 压缩能够将数据包丢失概率和视觉降级等损失降至最低。
灵活的宏块排序 : 这是一种用于重新计划宏块表示顺序的策略。这对于误差鲁棒性非常方便,在视频传输过程中具有长期的积极影响。
数据分区: 这是H.264的另一个关键功能,它通过将所有语法元素分发到网络抽象层单元,允许分离标头,运动信息和内部信息。
内部编码: 使用内部编码可以约束数据包丢失对运动补偿的影响。它还有助于终止和减少错误传播到最低限度。
切换图片: H.264的这一特性允许在参考信号存在差异的情况下进行预测编码。此功能可用于自适应错误恢复目的,尤其是在无线环境中。
让我们看一下 H.264 压缩上下文中的配置文件和级别。
配置文件和级别