高级视频编码
H.264 / AVC
由 ITU-T 与 ISO/IEC 联合制定的视频压缩标准,分别以 H.264 和 MPEG-4 AVC 发布,广泛用于广播、光盘、网络视频、移动设备和实时通信。
详细说明
H.264,又称 AVC(Advanced Video Coding,高级视频编码),是由 ITU-T 视频编码专家组与 ISO/IEC 运动图像专家组联合制定的视频压缩标准。两家组织于 2001 年成立联合视频组(Joint Video Team,JVT),第一版规范在 2003 年获批,并分别作为 ITU-T H.264 与 ISO/IEC 14496-10 发布。MPEG 体系因此也把它称为 MPEG-4 Part 10 或 MPEG-4 AVC。
H.264 与早期的 MPEG-4 Visual 不是同一种编码。
MPEG-4 Visual 属于 ISO/IEC 14496-2,常见实现包括早期的 DivX 和 Xvid;AVC 属于 ISO/IEC 14496-10。单写“MPEG-4 视频”不能准确区分二者。
标准规定合规码流的语法以及解码器如何重建画面,并不规定编码器必须怎样寻找运动、分配码率或选择预测模式。H.264 编码器通常先利用同一幅画面中已经重建的相邻区域进行帧内预测,或从其他参考画面中寻找相似内容进行帧间预测,再对原始图像与预测结果之间的残差执行变换、量化和熵编码。解码端依据码流中的预测信息与残差数据重建画面,因此预测精度、参考结构和量化选择会共同影响所需数据量。基础编码单位是宏块,一个宏块通常覆盖 16×16 个亮度采样及相应的色度采样。帧内编码可按 16×16 或更小区域选择不同方向的预测;High Profile 还引入 8×8 帧内预测。帧间宏块能够划分为 16×16、16×8、8×16、8×8,后者又可继续细分至 4×4,使运动边界和局部变化分别使用不同的运动矢量。标准支持多参考画面和亚像素运动补偿,但编码器是否进行大范围搜索、使用多少参考帧以及怎样判断最优划分,属于实现策略而非码流规范。
预测残差主要通过 4×4 整数变换处理,High Profile 可使用 8×8 变换。其运算形式经过规定,使不同解码器能够在有限整数精度下得到一致结果。量化会舍弃部分变换系数精度,是有损压缩的主要来源;量化强度可以在图像、切片或宏块范围内调整。重建环路中的去块滤波器随后处理块边界,它的输出既用于显示,也成为后续预测的参考画面,因此不是播放器任意附加的画面美化功能。H.264 定义 CAVLC 与 CABAC 两类主要熵编码。CAVLC 根据邻近块的系数特征选择可变长度码,结构相对简单;CABAC 先把语法元素转换为二进制符号,再依据上下文模型进行自适应算术编码,通常能进一步减少码率,但计算与状态依赖更复杂。Baseline Profile 不使用 CABAC,Main 和 High 等配置文件则可以使用。
码流可包含 I、P、B 等不同切片类型。I 切片仅以同一画面内的信息预测,P 和 B 切片可以引用其他画面;B 切片并不必然只能引用时间上前后各一幅画面。IDR 图像是一类具有明确随机访问和参考清理语义的即时解码刷新点,而普通 I 图像只说明其内部切片采用帧内编码,不能在所有码流结构中视为完全等价的“关键帧”。
配置文件与级别描述的是两个维度。配置文件限定可使用的编码工具、位深和色度格式,例如 Baseline、Main、High,以及面向更高位深或专业色度采样的 High 10、High 4:2:2 和 High 4:4:4 Predictive;级别则限制最大画面采样数、每秒处理量、解码画面缓冲和码率等资源。设备声称支持 H.264,并不表示它能够解码所有配置文件、级别、分辨率和参考帧组合。H.264 同时规定逐行和隔行视频的编码方式。场自适应图像编码可按整幅图像选择帧或场结构,宏块自适应帧场编码则允许在同一画面的宏块对之间选择帧编码或场编码。后者能更细致地适应静止区域与隔行运动,但也增加编码判断和解码依赖。广播与早期高清光盘中的 1080i 节目可能使用这些工具,逐行网络视频通常不需要它们。
经过编码的数据被组织为网络抽象层单元,参数集、切片和补充增强信息可以按应用需要映射到不同传输环境。H.264 本身不是文件格式。
码流可封装在 MP4、QuickTime、Matroska、MPEG-2 Transport Stream、M2TS 或其他容器中,并与多种音频和字幕组合。文件扩展名不能单独证明内部视频编码,编码标准也不规定章节、菜单或数字版权管理。AVCHD、Blu-ray Disc、数字电视、网络流媒体、视频会议、监控录像和移动设备都采用过 H.264,但各应用会进一步限制允许的配置文件、级别、帧率和码率。Blu-ray 上的 AVC 需要遵守光盘应用规范,不能把任意合规 H.264 文件直接写入数据目录便称为 Blu-ray Video。x264、OpenH264 以及芯片中的硬件编码器是生成或处理 H.264 码流的具体实现,不是新的格式名称。
H.264 没有为某一分辨率规定唯一合适的码率,也不保证采用它的文件必然优于 MPEG-2、VC-1 或后继编码。画面内容、源素材、预处理、编码器实现、码率控制、关键帧结构和运算时间都会改变压缩结果;“H.264”标识说明解码语法,而不是对最终画质的评级。