视频编码的本质是在视频质量、文件大小(或带宽)、编码速度(或延迟) 这三个核心维度之间进行权衡与取舍。这就像一个“不可能三角”,几乎不可能同时达到极致。因此,不存在一套“万能”的编码参数可以适用于所有场景。根据不同应用场景的核心需求,我们必须对编码器进行针对性的参数调整。下面,我们介绍一些基础的参数的概念和作用。
1. 编码格式的选择
编码格式选择首先考虑兼容性与普及度,CIX VPU支持的常用编码格式中,
- 264/AVC: 是当今兼容性最广泛的编码格式。几乎所有设备(手机、电脑、电视、相机)和所有浏览器、播放器都原生支持。对于需要最大范围覆盖用户的应用场景,H.264仍然是安全、可靠的首选。
- 265/HEVC: 兼容性次于H.264,但已成为4K HDR内容的主流格式。较新的手机、电脑、智能电视和流媒体设备普遍支持。但在一些旧设备或浏览器上可能需要软解,较耗电。
- VP8/VP9: 主要由Google推动,是AV1的前身。在YouTube上广泛使用,并被Chrome、Android系统很好地支持。
另外,CIX VPU也支持mjpeg和mpeg4格式,由于比较古老,压缩率低,也尽在一些特殊场景中使用。
其次考虑压缩效率, H.265/HEVC > VP9 > H.264/AVC(baseline)≈ VP8。
最后考虑专利问题,特别是H.265/HEVC。
2. 码率的核心作用:平衡 “画质” 与 “资源消耗”
码率的核心功能是在 “视频画质” 和 “带宽 / 存储资源” 之间建立量化关联,具体体现在三个方面:
- 决定画质的 “数据基础”
视频画面的细节(如纹理、色彩过渡、动态边缘)需要通过数据来描述。码率越高,单位时间内分配给画面的 “数据量” 就越多,编码器就能更精细地记录细节,即可保留更多的画面信息。
- 控制带宽和存储成本
码率直接决定视频的 “体积”:
- 带宽消耗:在线播放时,视频码率必须≤用户网络带宽(
- 存储占用:1 小时 1080p 视频,264 编码下 10Mbps 码率约占用 4.5GB 存储,5Mbps 则仅需 2.25GB,码率减半可直接节省 50% 存储成本。
- 影响编码 / 解码效率
高码率视频的编码过程更简单(无需过度压缩),但解码时需要处理更多数据,对设备性能要求更高;低码率视频则需要编码器进行更复杂的压缩计算,但解码压力更小,适合低配设备。
在选择码率时,同样需要前置考虑视频分辨率、帧率以及压缩率(即图像保留信息量),来计算码流。并根据当前环境限制的带宽作为上限,综合考虑。
以下为主流编码格式(H.264/H.265)下的码率表,覆盖常见场景:
| 应用场景 | 分辨率 + 帧率 | H.264 码率范围 | H.265 码率范围 |
|---|---|---|---|
| 短视频/日常记录 | 720p + 30fps | 1-3Mbps | 0.5-1.5Mbps |
| 监控 | 1080p + 25fps | 2~4 Mbps | 1-3Mbps |
| 影视剧/点播 | 1080p + 30fps | 3-8Mbps | 1.5-4Mbps |
| 云游戏/远程桌面 | 1080p + 60fps | 8-15Mbps | 4-8Mbps |
| 超高清影视 | 4K + 30fps | 10-20Mbps | 5-10Mbps |
| VR /专业直播 | 4K + 60fps | 20-35Mbps | 10-18Mbps |
以上表格仅供量级参考,用户可根据自己场景需求调整。
3. 码率控制:CBR 与 VBR 的差异及应用
编码器的码率控制通常分为两种模式:
- 恒定码率(CBR,Constant Bitrate)
特点:全程保持码率稳定,无论画面是复杂动态还是简单静态,单位时间的数据量一致。
优势:带宽占用可预测,适合对稳定性要求高的场景—— 避免因画面突然复杂导致码率飙升,突破带宽上限造成卡顿。
劣势:静态场景浪费带宽,动态场景可能因码率不足导致画质下降。
适用场景:游戏,直播,安防监控,视频会议 - 动态码率(VBR,Variable Bitrate)
特点:根据画面复杂度自动调整码率 —— 动态场景(用高码率保留细节,静态场景用低码率节省资源。
优势:在相同平均码率下,画质比 CBR 更优(资源集中用于需要的画面)。
劣势:码率波动大,若峰值码率超过带宽上限,可能导致播放卡顿。
适用场景:转码,录像
而对于视频点播,短视频等场景,需要权衡带宽控制和画面稳定性来考虑。带宽有限时,一般以CBR为优。带宽宽裕时,考虑提升画质可选VBR。
4. 帧类型以及GOP
在视频编码技术中,GOP(Group of Pictures,图像组)是由 I 帧、P 帧、B 帧组成的 “编码单元”,是视频压缩的基础单元,而帧类型的合理选择则是实现高效压缩与画质平衡的核心。它们共同决定了视频的压缩效率、解码复杂度和传输适应性。
I 帧(Intra-coded Frame,关键帧)
- 编码方式:仅利用单帧内的空间冗余进行压缩,不依赖其他帧
- 特点:
压缩率最低(体积最大)
可独立解码,无需参考其他帧
画质最高,作为整个 GOP 的基准帧 - 应用场景:视频开头、场景切换处、GOP 起始点必须插入 I 帧
P 帧(Predictive-coded Frame,预测帧)
- 编码方式:基于前一帧(I 帧或 P 帧)的差异进行编码,仅记录变化部分
- 特点:
压缩率高于 I 帧
必须依赖前向参考帧才能解码
画质受参考帧质量和预测准确性影响 - 应用场景:大多数动态变化不大的场景,是 GOP 中的主要组成部分
B 帧(Bidirectional Predictive Frame,双向预测帧)
- 编码方式:同时参考前向帧和后向帧(I 帧或 P 帧),记录与两帧的差异
- 特点:
压缩率最高
解码复杂度最高,需要缓存前后帧
可提供比 P 帧更好的画质(在相同码率下) - 应用场景:静态或缓慢变化场景,可显著提高压缩效率
帧类型的选择需根据具体应用场景,在压缩效率、延迟、画质和兼容性之间寻找平衡。CIX VPU提供多种GOP type,我们常用的有lowdelay(IPPPPP…)和pyramid金字塔(I-P-B-B-B-P-B-B-B-P-...),此结构一般甚至B frames为3.
5. I帧间隔
在视频编码中,I 帧间隔是决定视频压缩效率、延迟、容错性的核心参数之一。它的本质是两个关键帧(I 帧)之间的帧数量(或时间间隔)。I帧间隔
- 影响视频压缩率,间隔越长,压缩效率越高,带宽 / 存储占用越低,反之则压缩效率低、占用高。
- 直接决定视频的 “解码启动延迟” (即常说的seek延迟)和 “实时交互延迟”,间隔越短,延迟越低;间隔越长,延迟越高。
- 决定视频在 “数据丢失 / 传输错误” 时的 “画面恢复速度”,间隔越短,容错性越强,画面恢复越快;间隔越长,容错性越弱,卡顿时间越长。
- 对 “画质均匀性” 和 “动态场景细节” 也有间接影响,间隔过长可能导致局部画质下降,间隔过短则可能浪费码率。
下面列举一些常用的场景中,GOP结构和I帧间隔的设置建议:
| 应用场景 | 推荐 GOP 长度 | 帧类型组合 | 核心设计思路 |
|---|---|---|---|
| 短视频/日常记录 | 30-60 帧(1-2 秒) | pyramid | 中等压缩率,保证设备兼容性 |
| 监控 | 60-120 帧(2-4 秒) | lowdelay | 平衡存储占用与画面恢复速度 |
| 影视剧/点播 | 60-180 帧(2-6 秒) | pyramid | 多 B 帧最大化压缩效率,不考虑延迟 |
| 云游戏/远程桌面 | 无穷大 | lowdelay | 目前云服务的常用设置 |