编解码入门:为什么一部 4K 电影只要 5GB?
第 2 章 · VOD 流媒体技术全解(2/12)
本章你会理解:视频编码到底是什么、为什么能压缩几十倍、H.264 / H.265 / AV1 / VP9 到底谁更好、怎么用 ffmpeg 压一段视频。
预计阅读时间:25 分钟
2.1先算个账:不压缩的视频有多大
回忆上一章算过的:
一段 1080p、30fps、YUV 4:2:0、8-bit 的未压缩视频:
每秒大小 = 1920 x 1080 x 1.5(YUV 4:2:0 是 RGB 的一半) x 30 / 1024² ≈ 89 MB/秒
所以:
- 1 分钟视频 ≈ 5.3 GB
- 90 分钟电影 ≈ 480 GB
- 4K 电影(4 倍像素、30fps) ≈ 1.9 TB
Netflix 真实的 4K 电影文件一般 5-15 GB。也就是说——
编码把视频压缩到了原始大小的 1% 以下。
这不是魔法,是几十年的数学成果。我们来看它怎么做到的。
2.2编码与解码:两个对称的过程
- 编码(Encode):把大文件压成小文件 → 慢,要消耗大量 CPU/GPU
- 解码(Decode):把小文件还原成画面 → 快,手机芯片一般都有专门硬件
编码器(Encoder) 和 解码器(Decoder) 合称 Codec(编解码器)。
为什么编码比解码慢那么多?
编码要"尝试所有可能性找最佳压缩方案",解码只要"按压缩方案的说明还原"。
这就像快递打包一件异形物品——打包的人要精心折叠省空间,开箱的人撕开胶带就行。
2.3视频压缩的两把斧
压缩视频主要靠两种方式:
斧 1:帧内压缩(Intra-frame)
把一张图片本身压缩。原理和 JPEG 基本一样:
- 人眼对低频信息(大面积色块)敏感、对高频信息(细节噪点)不敏感
- 用 DCT(离散余弦变换) 把图片从像素域转到频率域
- 把不重要的高频系数扔掉或用少的 bit 存
类比:就像你记电话号码"13912345678"时,前面"139"是运营商前缀(重要),后面数字随机(可以精确记忆)。一张图片里大面积的蓝天也类似——主色调很重要,每朵云的边缘细节可以概括。
这种压缩对每一帧独立进行,得到的帧就是 I 帧。
斧 2:帧间压缩(Inter-frame)
利用"相邻帧之间几乎一样"这个特点,只存差异。
具体做法叫 运动估计(Motion Estimation)+ 运动补偿(Motion Compensation):
1. 把画面切成小方块(宏块 Macroblock,典型 16x16 或 8x8 像素)
2. 对每一个方块,在前一帧里搜索"最像它的"位置
3. 只记录运动向量(向左/右/上/下偏了多少像素)+ 残差(细微差异)
类比:摄像师拍摇头镜头,画面整体向右平移 → 编码器发现所有方块都向右移 20 像素,只要记录一次"20 像素"而不是重新存每个方块。
帧间压缩效率远远高于帧内压缩,视频比 JPEG 图片序列小几十倍就是这个原因。
2.4编码的其他技巧(不用细记,了解即可)
现代编码器还会:
| 技巧 | 做什么 | 效果 |
|---|---|---|
| 变换(Transform) | DCT / Integer Transform 把像素变成频率系数 | 方便后续量化 |
| 量化(Quantization) | 把频率系数除以一个整数、四舍五入 | 画质主要损失点、也是压缩主力 |
| 熵编码(Entropy Coding) | CABAC / CAVLC:用更少的 bit 存常见符号 | 无损压缩最后一步 |
| 环路滤波(In-loop Filter) | 去除块效应(Blocking Artifact) | 画面更平滑 |
| SAO / ALF(H.265+) | 自适应采样偏移 | 减少锐利边缘的伪影 |
| Multi-reference | P/B 帧可参考多张历史帧 | 更准的预测 → 更小的残差 |
这些你在实际工程中只要通过参数开关就可以,不需要自己实现。
2.5五大主流编码一览
从老到新:
H.264 / AVC(2003):全球通用的"老黄金标准"
- 全名:H.264 / MPEG-4 Part 10 / Advanced Video Coding (AVC)
- 谁定的:ITU-T + ISO/IEC MPEG 联合
- 兼容性:几乎所有能播视频的设备都支持
- 压缩效率:基准(我们用它作为比较基线)
- 专利:付费(MPEG LA 专利池),但已成行业默认
- 适合:兼容性第一、算力受限的场景
H.264 已经 20 多年了,依然是 YouTube、Facebook、Zoom 的首选兜底编码。
H.265 / HEVC(2013):压得更狠,但授权让人头大
- 全名:H.265 / MPEG-H Part 2 / High Efficiency Video Coding (HEVC)
- 压缩效率:相同画质下比 H.264 省约 37% 码率(高分辨率场景研究数据)
- 专利:混乱且昂贵——三个专利池(MPEG LA、HEVC Advance、Velos Media)+ 很多未池化专利
- 硬解:iPhone 7+(2016)、安卓 6+ 主流新机、大部分 4K 电视
- 适合:苹果生态、4K 流媒体、对存储/带宽成本敏感的场景
HEVC 授权乱象是它在 Web 端推行缓慢的根本原因。Chrome、Firefox 都曾经拒绝支持。
VP9(2013):Google 的免费替代
- 全名:VP9,不是字母缩写
- 谁做的:Google(买了 On2 Technologies 后自研)
- 压缩效率:接近 H.265
- 专利:免版税
- 主要用途:YouTube、Google Meet
- 硬解:安卓、Chromecast、部分智能电视;iOS 不原生支持
AV1(2018):免版税下一代
- 全名:AOMedia Video 1
- 谁做的:AOMedia 联盟(Google、Netflix、Meta、Amazon、Cisco、微软、Intel、苹果等巨头)
- 压缩效率:比 H.264 省约 53%、比 H.265 再省约 25%(同研究数据集)
- 专利:免版税
- 硬解:iPhone 15 Pro+(2023)、Pixel 6+、骁龙 8 Gen 2+、Intel Arc、NVIDIA RTX 40 系;2024 后大量普及
- 编码速度:早期 SVT-AV1 等工程实现大幅改善;现在 CPU 编码成本约是 H.265 的 2-5 倍
Netflix、YouTube、TikTok、Meta 都在把 AV1 作为未来主流。
H.266 / VVC(2020):最新一代,还没普及
- 压缩效率:比 H.264 省约 78%、比 AV1 再省约 25-30%
- 硬解:2024 起旗舰手机开始带,消费级设备覆盖率仍很低
- 适合:观望
对比表
| H.264 | H.265 | VP9 | AV1 | H.266 | |
|---|---|---|---|---|---|
| 年份 | 2003 | 2013 | 2013 | 2018 | 2020 |
| 压缩效率(vs H.264) | 基准 | +37% | ~+30% | +53% | +78% |
| 编码速度 | 最快 | 中 | 中 | 慢 | 极慢 |
| 解码负担 | 最轻 | 中 | 中 | 较重 | 重 |
| 兼容性 | 极高 | 高 | 中(Web) | 中且增长中 | 低 |
| 专利费 | 付费 | 高且乱 | 免 | 免 | 付费 |
37%、53%、78% 都不是"普适保证"!
这些数字来自特定测试集、特定分辨率、特定质量指标(如 BD-rate with VMAF/PSNR)。不同内容类型(动画 vs 实拍 vs 游戏录屏)下差距很大。不要拿来当产品宣传的绝对值。
数据来源:Topiwala, Kulupana, Krishnan, Performance Comparison of VVC, AV1, HEVC and AVC for High Resolutions (ResearchGate 2024)。
2.6实际项目怎么选编码?
一个实用的决策树:
实际常见组合(Bitrate Ladder + 编码组合)
一份常见的短剧 APP 编码策略:
| 档位 | 分辨率 | H.264 码率 | H.265 码率 | AV1 码率(旗舰机) |
|---|---|---|---|---|
| Low | 360p | 500 kbps | 350 kbps | 250 kbps |
| Mid | 540p | 900 kbps | 650 kbps | 480 kbps |
| Main | 720p | 1.5 Mbps | 1.0 Mbps | 750 kbps |
| High | 1080p | 3.5 Mbps | 2.2 Mbps | 1.6 Mbps |
2.7动手:用 ffmpeg 压一段视频
动手试一试:下面每个命令你都可以复制到终端试跑。
准备一个输入文件 input.mov。
① 最简:H.264 默认参数
- -i input.mov:输入
- -c:v libx264:视频编码用 x264(H.264 的开源实现)
- output.mp4:输出文件
② 用 CRF 控制质量
参数解释:
| 参数 | 含义 |
|---|---|
| -preset medium | 编码速度档位。可选 ultrafast/superfast/veryfast/faster/fast/medium/slow/slower/veryslow。越慢 = 压得越狠(同质量下文件更小) |
| -crf 23 | 质量目标,范围 0-51。数字越小画质越好、文件越大。日常 18-28 之间,23 是默认。 |
| -c:a aac -b:a 128k | 音频用 AAC、128 kbps |
CRF 速记:
- CRF 18:视觉无损(普通人看不出差异)
- CRF 23:高质量(推荐日常使用)
- CRF 28:能接受(明显可见的压缩痕迹)
③ 为流媒体做"关键帧对齐 + faststart"
做 VOD 发布时一定要加:
新增参数:
| 参数 | 为什么 |
|---|---|
| -g 60 -keyint_min 60 | 每 60 帧一个 I 帧。30fps 就是 2 秒一个 GOP,方便切片。 |
| -sc_threshold 0 | 禁用场景切换自动插 I 帧;保证所有码率档位 I 帧位置一致。 |
| -movflags +faststart | 把 MP4 的"目录表"(moov box)放到文件开头,支持边下边播。 |
| -profile:v high -level 4.0 | 兼容性设置;Level 4.0 支持到 1080p30。 |
④ H.265 压同样一段
注意:
- H.265 的 CRF 要比 H.264 加大约 3-5 才得到相近画质(26 ≈ H.264 的 22)
- -tag:v hvc1 让 Apple 设备能正确识别。否则 iOS/Safari 可能拒绝播放。
⑤ 对比实验:量化压缩效果
假设原片 1 分钟 4K mov 大约 2 GB。你压出来:
| 命令 | 输出大小 | 相对 |
|---|---|---|
| 不压缩 YUV | ~2 GB(源) | 100% |
| H.264 CRF 23 | ~30 MB | 1.5% |
| H.264 CRF 18 | ~80 MB | 4% |
| H.265 CRF 26 | ~18 MB | 0.9% |
| AV1(SVT-AV1 preset 8) | ~12 MB | 0.6% |
压缩率高达 100-500 倍,但在手机屏幕上肉眼几乎看不出差别。
2.8Per-Title、Per-Shot 编码:Netflix 的黑科技
默认做法是"所有视频都用同一套码率阶梯":所有电影都出 360p@500k / 720p@1500k / 1080p@4000k。但:
- 一部卡通片(大色块、少细节)在 1080p@1000k 就够好看
- 一部演唱会(闪烁灯光、快速运动)1080p@5000k 可能还有压缩痕迹
让每一部电影有自己的最优码率阶梯,就是 Per-Title Encoding(Netflix 2015 年提出):
Per-Shot / Dynamic Optimizer(Netflix 2018)更狠:
把一部电影按"镜头"切开(场景检测),每个镜头都用自己最优的码率和编码参数。
Netflix 用 VMAF(他们自研的感知质量分数)作为优化目标,声称做到同质量再省 17% 码率。
这需要你做吗?
中小平台用云厂商的"智能转码模板"(阿里云 "窄带高清"、腾讯云 "极速高清"、AWS MediaConvert "QVBR")就能享受大部分收益,不用自研。Netflix 那套是针对数亿订阅用户规模才值得。
2.9硬编码 vs 软编码
| 方式 | 说明 | 速度 | 画质 | 适合场景 |
|---|---|---|---|---|
| 软编码(CPU) | libx264/libx265/SVT-AV1 | 慢 | 最好 | VOD 离线转码、需要极致质量 |
| 硬编码(GPU/ASIC) | NVIDIA NVENC、Intel QSV、Apple VideoToolbox | 快 5-50 倍 | 略差 | 直播、实时转码、低延迟 |
VOD 优先用软编码:你不用赶时间,多花几小时压一次能永久省带宽。
直播必须硬编码:不能让 1 秒的直播花 10 秒去编码。
2.10VMAF、PSNR、SSIM:衡量"画质"的三把尺子
怎么知道压缩后的视频"好不好看"?不能全靠人眼。
| 指标 | 全称 | 原理 | 范围 | 和人眼相关性 |
|---|---|---|---|---|
| PSNR | Peak Signal-to-Noise Ratio | 像素级差异 | 0-∞ dB(越大越好) | 弱 |
| SSIM | Structural Similarity | 考虑亮度/对比度/结构 | 0-1(越大越好) | 中 |
| VMAF | Video Multi-Method Assessment Fusion | 机器学习融合多特征 | 0-100(越大越好) | 强 |
VMAF 是 Netflix 开源的,工业界公认与人眼感知相关性最高。经验值:
- VMAF ≥ 93:视觉无损
- VMAF ≈ 80:高质量
- VMAF ≈ 60:可接受
- VMAF ≤ 40:明显压缩痕迹
本章要点回顾
1. 视频能压缩到原始大小 1% 以下,靠两把斧:帧内压缩(压每张图)+ 帧间压缩(只存帧间差异)。
2. 编码慢、解码快;编码器 + 解码器 = Codec。
3. H.264 是通用兜底,H.265 省 37% 带宽但授权贵,AV1 免费且压缩更强但编码慢,VVC 是未来但还没普及。
4. 别照抄"H.265 比 H.264 省 50%" 这类绝对数据,实际效率随内容变化很大。
5. VOD 转码 4 件必做:CRF 控质量、GOP 对齐、faststart、关闭 scene-cut。
6. Per-title / per-shot 编码是高阶优化,云厂商的智能转码模板已覆盖大多数收益。
7. VMAF 是衡量画质的主流工业指标。
© 2026 Zmead · VOD 流媒体技术全解