视频编解码技术详解
视频编解码(Video Codec)是数字视频处理的核心技术,通过压缩算法将原始视频数据转换为更小的文件大小,同时在解码时恢复视频内容。本文将深入探讨 H.264 和 H.265 两种主流视频编码标准的原理、特点及其在嵌入式系统中的应用。
原始视频数据量巨大。以1080p@30fps视频为例: - 分辨率:1920×1080像素 - 帧率:30帧/秒 - 色深:24位(RGB各8位) - 数据率:1920 × 1080 × 30 × 24 = 1.49 Gbps ≈ 186 MB/s
一、基本概念
1.1 视频压缩原理
视频压缩利用了三种冗余:
-
空间冗余(Spatial Redundancy) - 同一帧内相邻像素往往相似 - 通过帧内预测和变换编码消除 - 例如:蓝天区域的像素值变化很小
-
时间冗余(Temporal Redundancy) - 连续帧之间内容高度相似 - 通过运动估计和运动补偿消除 - 例如:静止背景在多帧中保持不变
-
视觉冗余(Perceptual Redundancy) - 人眼对某些信息不敏感 - 通过量化过程去除 - 例如:高频细节、色度信息
1.2 基本术语
-
帧类型:
- I 帧(Intra Frame):关键帧,独立编码,不依赖其他帧
- P 帧(Predicted Frame):预测帧,参考前面的 I 帧或 P 帧
- B 帧(Bidirectional Frame):双向预测帧,参考前后帧
-
GOP(Group of Pictures):
- 一组连续的视频帧,以 I 帧开始
- 典型结构:IBBPBBPBBPBBI…
- GOP 越长,压缩率越高,但随机访问性能越差
-
码率控制:
- CBR(Constant Bit Rate):恒定码率,适合流媒体传输
- VBR(Variable Bit Rate):可变码率,适合本地存储
- ABR(Average Bit Rate):平均码率,兼顾质量和大小
-
分辨率与帧率:
- 常见分辨率:720p (1280×720)、1080p (1920×1080)、4K (3840×2160)
- 常见帧率:24fps(电影)、30fps(标清)、60fps(高清)
二、H.264/AVC 编码标准
2.1 简介
H.264(也称为 AVC - Advanced Video Coding)是目前应用最广泛的视频编码标准,由 ITU-T 和 ISO/IEC 联合制定。
主要特点:
- 相比 MPEG-2,压缩效率提高 50% 以上 - 支持多种应用场景(广播、流媒体、存储)
- 良好的网络适应性
- 广泛的硬件支持
应用场景:
- 蓝光光盘
- 数字电视广播
- 视频会议
- 网络视频(YouTube、Netflix 等)
- 监控摄像头
- 移动设备视频
| Profile | 特点 | 应用 |
|---|---|---|
| Baseline | 基本工具,低复杂度 | 视频会议、移动设备 |
| Main | 支持B帧和CABAC | 数字电视广播 |
| High | 支持8×8变换 | 蓝光、HDTV |
| High 10 | 支持10位色深 | 专业视频 |
| Level | 最大分辨率 | 最大帧率 | 应用 |
|---|---|---|---|
| 3.0 | 720×576 | 30fps | SD 视频 |
| 3.1 | 1280×720 | 30fps | 720p HD |
| 4.0 | 1920×1080 | 30fps | 1080p HD |
| 5.1 | 1920×1080 | 60fps | 1080p 60fps |
2.2 编码流程
H.264 编码器的基本处理流程:
1 | |
详细步骤说明:
- 预测(Prediction)
- 帧内预测:利用当前帧已编码的相邻块预测当前块
- 帧间预测:利用参考帧通过运动估计预测当前块
- 生成预测块,计算残差(原始块 - 预测块)
- 变换(Transform)
- 对残差数据进行整数 DCT 变换
- 将空间域信号转换到频率域
- H.264 使用 4×4 或 8×8 整数变换
- 量化(Quantization)
- 将变换系数除以量化步长
- 这是有损压缩的主要来源
- 量化参数(QP)控制压缩质量和码率
- 熵编码(Entropy Coding)
- 使用 CAVLC 或 CABAC 算法
- 无损压缩,进一步减小数据量
- CABAC 效率更高但计算复杂度更大
- 环路滤波(Loop Filter)
- 去块滤波,消除块效应
- 提高主观视觉质量
- 改善参考帧质量
2.3 解码流程
解码过程是编码的逆过程:
1 | |
三、H.265/HEVC编码标准
3.1 简介
H.265(也称为 HEVC - High Efficiency Video Coding)是 H.264 的继任者,于 2013 年发布。
主要改进:
- 相比 H.264,压缩效率提高约 50%
- 更好地支持 4K/8K 超高清视频
- 改进的并行处理能力
- 更灵活的编码结构
应用场景:
- 4K/8K 超高清视频
- 流媒体服务(Netflix 4K)
- 新一代广播标准
- VR/AR 视频
- 监控系统(节省存储空间)
3.2 H.264 vs H.265 对比
| 特性 | H.264 | H.265 |
|---|---|---|
| 压缩效率 | 基准 | 提高50% |
| 最大块大小 | 16×16 | 64×64 |
| 帧内预测模式 | 9种 | 35种 |
| 变换大小 | 4×4, 8×8 | 4×4到32×32 |
| 并行处理 | 有限 | 良好支持 |
| 编码复杂度 | 中等 | 高 |
| 解码复杂度 | 低 | 中等 |
| 硬件支持 | 广泛 | 逐渐普及 |
实际效果对比:
- 相同质量下,H.265 文件大小约为 H.264 的 50%
- 相同码率下,H.265 视觉质量明显优于 H.264
- H.265 编码时间约为 H.264 的 2-3 倍
- H.265 解码复杂度约为 H.264 的 1.5 倍
四、编解码性能参数
4.1 码率与质量关系
不同分辨率的推荐码率(H.264):
| 分辨率 | 帧率 | 低质量 | 中等质量 | 高质量 |
|---|---|---|---|---|
| 480p | 30fps | 1 Mbps | 2.5 Mbps | 4 Mbps |
| 720p | 30fps | 2.5 Mbps | 5 Mbps | 8 Mbps |
| 1080p | 30fps | 5 Mbps | 8 Mbps | 12 Mbps |
| 1080p | 60fps | 8 Mbps | 12 Mbps | 20 Mbps |
| 4K | 30fps | 15 Mbps | 25 Mbps | 45 Mbps |
H.265 可以在相同质量下使用约 50% 的码率。
4.2 编解码性能指标
编码性能:
- 编码速度:帧/秒(fps),实时编码需要 ≥ 视频帧率
- 压缩比:原始大小/压缩后大小,通常 50:1 到 200:1
- 编码延迟:从输入到输出的时间,实时应用要求 < 100ms
解码性能:
- 解码速度:必须 ≥ 视频帧率才能流畅播放
- 解码延迟:通常比编码延迟小得多
- 内存占用:参考帧缓存、解码缓冲区
质量评估:
- PSNR(峰值信噪比):客观质量指标,单位 dB,越高越好
- SSIM(结构相似性):更符合人眼感知的质量指标
- 主观质量:人眼观看评分,最终标准
五、示例:使用 FFmpeg 进行编解码
将 YUV 转换为 H.264:
1 | |