CGJU
查工具网
2026年6月28日 · 阅读时长 8 分钟
💡 本文要点:从视频压缩的基本原理出发,深入讲解 I/P/B帧、CRF、CBR、GOP 等核心概念,并提供 FFmpeg 实战命令和不同场景的压缩模板。

一、视频压缩基本原理

视频压缩之所以可能,是因为视频数据中存在大量的冗余信息。视频压缩的本质就是去除这些冗余,用更少的数据表示相同的视觉内容。

1. 空间冗余

空间冗余是指同一帧图像内相邻像素之间的相关性。例如,一片蓝天的像素值非常接近,可以用更简洁的方式表示。

主要通过帧内预测、变换编码(DCT/DST)、量化等技术来消除空间冗余。

2. 时间冗余

时间冗余是指相邻帧之间的相关性。大多数视频中,相邻帧的内容变化很小,很多区域几乎完全相同。

主要通过帧间预测(运动估计与运动补偿)来消除时间冗余,这也是视频压缩比远高于图片压缩的主要原因。

3. 视觉冗余

视觉冗余是指人眼视觉系统无法感知的信息。人眼对亮度比对颜色更敏感,对高频细节不如对低频内容敏感。

主要通过色度子采样(如 4:2:0)、量化矩阵、心理视觉模型等技术来利用视觉冗余。

4. 编码冗余

编码冗余是指表示数据所用的比特数多于理论最小值。通过熵编码(如霍夫曼编码、算术编码、CABAC)可以进一步压缩数据。

二、I/P/B 帧概念详解

在现代视频编码标准(如 H.264、H.265)中,视频被划分为不同类型的帧,每种帧的编码方式不同,在压缩效率和错误恢复中扮演不同角色。

1. I 帧(关键帧)

I 帧(Intra-coded Picture)是帧内编码帧,也称为关键帧。它不参考其他帧,独立编码,类似于一张静态图片。

  • 特点:独立解码,画质最好,体积最大
  • 作用:作为随机访问点,用于视频快进/快退、错误恢复
  • 压缩比:较低,约为 1:10 ~ 1:20

2. P 帧(前向预测帧)

P 帧(Predictive-coded Picture)是前向预测帧,参考前面的 I 帧或 P 帧进行预测编码,只编码预测误差。

  • 特点:依赖前面的帧,不能独立解码,体积较小
  • 作用:利用时间冗余,大幅提高压缩效率
  • 压缩比:较高,约为 1:50 ~ 1:100

3. B 帧(双向预测帧)

B 帧(Bidirectionally predictive-coded Picture)是双向预测帧,同时参考前面和后面的帧进行预测,压缩效率最高。

  • 特点:依赖前后帧,压缩率最高,解码延迟较大
  • 作用:进一步提高压缩效率,适合存储场景
  • 压缩比:最高,约为 1:100 ~ 1:200
⚠️ 注意:直播场景通常不使用 B 帧,因为 B 帧需要参考未来帧,会增加延迟。实时直播推荐使用 I+P 帧结构。

三、CRF vs CBR:码率控制方式对比

码率控制是视频压缩中最重要的参数之一,它决定了如何分配比特来保证视频质量。常见的码率控制方式有 CRF、CBR、VBR 等。

1. CRF(恒定质量)

CRF(Constant Rate Factor)是恒定质量模式,目标是保持整个视频的视觉质量一致,码率则根据视频复杂度动态变化。

  • 优点:质量稳定,无需担心复杂场景画质下降
  • 缺点:文件大小不可精确预测
  • 适用场景:视频存储、视频网站、大多数普通场景

CRF 值范围:

  • H.264:0-51,默认 23,推荐 18-28
  • H.265:0-51,默认 28,推荐 22-32
  • 数值越小,质量越高,文件越大

2. CBR(恒定码率)

CBR(Constant Bitrate)是恒定码率模式,整个视频的码率保持不变,无论视频内容复杂还是简单。

  • 优点:码率稳定,文件大小可预测,适合流媒体直播
  • 缺点:复杂场景可能画质不足,简单场景浪费码率
  • 适用场景:直播推流、视频会议、有限带宽的流媒体

3. VBR(可变码率)

VBR(Variable Bitrate)是可变码率模式,根据视频内容复杂度动态调整码率,复杂场景分配更多码率,简单场景减少码率。

  • 优点:整体质量高,码率利用更高效
  • 缺点:码率波动较大,不适合实时流媒体
  • 适用场景:视频存储、本地播放

4. ABR(平均码率)

ABR(Average Bitrate)是平均码率模式,在保证平均码率达到目标值的前提下,允许码率在一定范围内波动。

  • 优点:文件大小可控,质量比纯 CBR 好
  • 缺点:质量不如 CRF 稳定
  • 适用场景:需要控制文件大小的场景

四、GOP 结构详解

GOP(Group of Pictures)即图像组,是指两个 I 帧之间的一组连续帧。GOP 结构决定了 I 帧的间隔,对视频压缩效率、随机访问性和容错性都有重要影响。

1. GOP 长度

GOP 长度是指两个相邻 I 帧之间的帧数。例如,GOP=30 表示每 30 帧一个 I 帧。

  • GOP 越大:压缩效率越高,但随机访问越慢,错误传播范围越大
  • GOP 越小:随机访问越快,容错性越好,但压缩效率越低

2. 常见 GOP 结构

典型的 GOP 结构如 IBBPBBPBBP...,即 I 帧后面跟着多个 B 帧和 P 帧的组合。

3. 不同场景 GOP 推荐

场景 GOP 长度(帧率 30fps) 说明
视频存储/点播 60-300 帧(2-10秒) 追求压缩效率
直播推流 30-60 帧(1-2秒) 平衡延迟和效率
视频会议 10-30 帧(0.3-1秒) 低延迟、快速恢复
监控视频 150-600 帧(5-20秒) 最大化压缩比

五、分辨率和帧率选择

1. 常见分辨率

名称 分辨率 推荐码率范围
360p 640×360 400-800 kbps
480p 854×480 800-1500 kbps
720p 1280×720 1500-4000 kbps
1080p 1920×1080 3000-8000 kbps
4K 3840×2160 10000-30000 kbps

2. 帧率选择

  • 24fps:电影标准,画面有胶片感,适合电影、短视频
  • 25fps:PAL 制电视标准,国内常用
  • 30fps:NTSC 制标准,网络视频常用,流畅度较好
  • 60fps:高帧率,适合游戏、体育等快速运动画面

六、FFmpeg 压缩命令实战

1. 基础压缩命令(CRF 模式)

使用 H.264 编码器,CRF 模式,推荐大多数场景使用:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

2. 目标文件大小压缩(两遍编码)

如果需要精确控制文件大小,可以使用两遍编码(Two-pass):

# 第一遍:分析视频
ffmpeg -i input.mp4 -c:v libx264 -b:v 1000k -pass 1 -an -f null /dev/null

# 第二遍:正式编码
ffmpeg -i input.mp4 -c:v libx264 -b:v 1000k -pass 2 -c:a aac -b:a 128k output.mp4

Windows 用户请将 /dev/null 替换为 NUL

3. 调整分辨率压缩

# 缩放到 720p
ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -crf 23 -c:a aac -b:a 128k output_720p.mp4

# 等比例缩放到宽度为 1280
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -crf 23 -c:a copy output.mp4

4. 调整帧率压缩

# 降低到 24fps
ffmpeg -i input.mp4 -r 24 -c:v libx264 -crf 23 -c:a copy output_24fps.mp4

5. H.265 高效压缩

ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset medium -c:a aac -b:a 128k output_h265.mp4

七、不同场景压缩模板

1. 网络发布视频(平衡质量和大小)

ffmpeg -i input.mp4 \
  -c:v libx264 -crf 23 -preset medium \
  -c:a aac -b:a 128k \
  -movflags +faststart \
  output_web.mp4

-movflags +faststart 将元数据移到文件开头,支持网络边下边播。

2. 短视频/朋友圈(小体积优先)

ffmpeg -i input.mp4 \
  -vf scale=720:-1 -r 25 \
  -c:v libx264 -crf 28 -preset slow \
  -c:a aac -b:a 96k \
  output_short.mp4

3. 视频归档(高质量存储)

ffmpeg -i input.mp4 \
  -c:v libx265 -crf 22 -preset veryslow \
  -c:a copy \
  output_archive.mkv

4. 直播推流(CBR 模式)

ffmpeg -i input.mp4 \
  -c:v libx264 -b:v 2500k -maxrate 2500k -bufsize 5000k \
  -g 60 -keyint_min 60 -sc_threshold 0 \
  -c:a aac -b:a 128k \
  -f flv rtmp://server/live/stream

参数说明:

  • -g 60:GOP 大小为 60 帧(2秒@30fps)
  • -keyint_min 60:最小关键帧间隔
  • -sc_threshold 0:禁用场景切换检测,保证 GOP 稳定

八、压缩质量优化技巧

1. 选择合适的 preset

preset 参数控制编码速度和压缩率的平衡,可选值:

  • ultrafast:最快,压缩率最低
  • superfast / veryfast / faster / fast:较快
  • medium:默认,平衡之选
  • slow / slower / veryslow:慢,压缩率更高

建议:时间充足用 slow,追求速度用 fast,默认 medium 就行。

2. 使用适当的 CRF 值

推荐的 CRF 起始值:

  • H.264:CRF 23(默认),追求质量用 20,追求小体积用 28
  • H.265:CRF 28(默认),追求质量用 25,追求小体积用 32

3. 音频优化

  • 语音内容:64-96 kbps AAC 就够了
  • 音乐内容:128-192 kbps AAC
  • 高质量音乐:256-320 kbps AAC 或使用 FLAC 无损

4. 其他优化

  • 去除不必要的音轨和字幕轨
  • 使用 YUV420P 像素格式(兼容性最好)
  • 视频降噪可以提高压缩效率(-vf nlmeans

总结

视频压缩是一门平衡的艺术,需要在质量、文件大小、编码速度、兼容性之间找到最佳平衡点。

快速上手建议:

  • 新手入门:直接用 CRF 23 + medium preset
  • 想更小体积:提高 CRF 值(如 26-28)
  • 想要更好质量:降低 CRF 值(如 20)
  • 时间充裕:用 slow preset 获得更好的压缩率
  • 进阶用户:根据具体场景调整分辨率、帧率、GOP 等参数

如果你不想记这些复杂的参数,可以直接使用我们的 在线视频压缩工具,简单几步就能完成视频压缩。

相关推荐

更多精彩文章和实用工具

想快速压缩视频?

使用我们的在线视频压缩工具,无需安装FFmpeg,浏览器中即可轻松完成视频压缩

立即体验 ➡