2. 视频编码基础

无人机图传链路中,H.265 编码器面对的是每秒 30 帧甚至 60 帧的原始画面。以 1080p、YUV420 8bit 为例,单帧未压缩数据约为 1920×1080×1.5 ≈ 3.1 MB,30 帧就是约 93 MB/s,接近 750 Mbps。这样的码率无法通过无线链路稳定传输,因此必须依靠视频压缩。理解压缩原理、颜色空间、帧类型、GOP 结构与码率画质关系,是后续调优 H.265 参数的基础。

一、视频压缩的核心原理:去除三类冗余

视频压缩的本质不是“把画面变小”,而是去除人眼不敏感或数据本身重复的信息。主要针对三类冗余:

  • 空间冗余:同一帧内相邻像素高度相似,例如天空、墙面、地面。通过帧内预测和变换编码压缩。
  • 时间冗余:相邻帧之间内容变化很小,例如悬停时画面几乎不变。通过运动估计与帧间预测,只传“运动矢量+残差”。
  • 视觉冗余:人眼对亮度敏感、对色度不敏感,对高频细节不敏感。通过色度下采样、量化、熵编码进一步压缩。

H.265 相比 H.264 的核心提升在于:编码单元从固定宏块升级为 CTU(最大 64×64)并可递归划分,帧内预测方向从 9 种扩展到 35 种,运动补偿精度和 Merge 模式更灵活,因此同画质下码率通常可降低 30%~50%。

二、YUV 颜色空间:为什么不用 RGB 直接编码

RGB 三个分量同等重要,直接压缩会浪费大量码率在色度上。YUV 将亮度 Y 与色度 U/V 分离,利用人眼对亮度更敏感的特性,对色度进行下采样。常见格式:

格式每像素采样相对大小典型场景
YUV444Y/U/V 全采样100%专业后期、色键
YUV422水平色度减半约 67%广播、采集
YUV420水平垂直各减半50%无人机图传、H.265 主流

无人机 H.265 编码通常输入 NV12(YUV420 的一种内存排列),即 Y 平面完整,UV 交错存放且宽高各为 Y 的一半。编码器内部还会做 8bit→10bit 或保持 8bit 的选择,10bit 能减少天空渐变处的色带,但会增加约 25% 数据量。

三、帧类型 I/P/B:时间轴上的三种角色

编码器把视频帧分为三类,形成预测依赖链:

  • I 帧(帧内编码帧):不依赖其他帧,可独立解码,数据量最大,是随机接入点和抗误码锚点。
  • P 帧(前向预测帧):参考前面的 I 或 P 帧,只编码运动矢量和残差,数据量中等。
  • B 帧(双向预测帧):同时参考前后帧,压缩率最高,但引入解码延迟和依赖复杂度。

无人机图传对延迟敏感,通常采用 IPPP… 低延迟结构,少用或不用 B 帧;而航拍存储文件可以启用 B 帧以节省存储空间。H.265 还支持 P 帧之间的分层 B(Hierarchical B),但会显著增加端到端延迟。

YUV420 采样布局 Y 平面 8×8 U 平面 4×4 V 平面 4×4 Y 全采样,U/V 各方向减半 总数据量约为 YUV444 的 50% H.265 图传主流输入格式 GOP 结构:I 帧锚点 + P 帧前向预测 I 关键帧 P 前向预测 P 前向预测 P 前向预测 P 前向预测 I 下一 GOP GOP 长度 = 5 I 帧周期决定随机接入 与抗丢包恢复能力

四、GOP 结构:I 帧周期与抗误码能力

GOP(Group of Pictures)指两个 I 帧之间的帧序列。GOP 长度直接决定三件事:

  1. 随机接入速度:新用户加入或丢包后恢复,必须等到下一个 I 帧。GOP 越长,等待越久。
  2. 抗误码能力:P 帧依赖前序帧,一旦丢失会连续花屏直到下一个 I 帧。GOP 越长,花屏持续时间越久。
  3. 编码效率:I 帧数据量大,GOP 越短,I 帧占比越高,平均码率越高、压缩效率越低。

无人机图传常用配置为 GOP = 30~60(1~2 秒一个 I 帧),并配合 IDR 强制刷新。当链路检测到丢包或 RTT 恶化时,可主动请求编码器插入 IDR 帧,快速恢复画面。

# 典型 H.265 低延迟图传编码参数(示意)
x265 --input-res 1920x1080 --fps 30 \
     --profile main --keyint 30 --min-keyint 30 \
     --bframes 0 --no-scenecut \
     --rc-lookahead 0 --tune zerolatency \
     --bitrate 4000 --vbv-maxrate 4000 --vbv-bufsize 2000 \
     --repeat-headers --aud --hrd

五、码率与画质的关系:不是线性,而是边际递减

码率是单位时间的数据量,画质是主观/客观质量。两者关系呈边际递减:从 1 Mbps 提升到 2 Mbps,画质提升明显;从 8 Mbps 提升到 16 Mbps,提升有限。影响画质的还有分辨率、帧率、运动复杂度、量化参数 QP、场景切换等。

关键结论:在固定码率下,分辨率越高,单像素分到的比特越少,细节越容易糊;帧率越高,运动越流畅,但每帧可用比特减少。无人机图传应在“分辨率、帧率、码率”三者之间做权衡,而不是盲目拉高某一项。

六、案例与误区复盘

案例:某无人机 1080p30 图传设置 4 Mbps、GOP=60、开启 B 帧。飞行中快速横滚时画面出现块效应,丢包后花屏约 2 秒才恢复。复盘发现:B 帧增加了解码延迟,GOP=60 导致 I 帧间隔 2 秒,丢包后必须等下一个 I 帧。调整方案:关闭 B 帧、GOP 改为 30、码率提升到 6 Mbps,并启用按需 IDR 请求。结果:端到端延迟下降约 80 ms,丢包恢复时间缩短到 1 秒内,快速运动画面块效应明显减轻。

常见误区:

  • 认为“码率越高画质一定越好”,忽略链路带宽和波动,导致拥塞丢包,画质反而更差。
  • 把 GOP 设得很长以节省码率,却牺牲了抗丢包恢复能力,图传场景得不偿失。
  • 忽略 YUV 格式与位深,输入 NV12 8bit 却期望 10bit 的渐变表现。
  • 在低延迟图传中启用 B 帧,增加解码重排延迟,影响飞控图传的实时性。