视频编解码(二):H.264 是怎么把 10GB 压成 100MB 的?
视频编解码二H.264 是怎么把 10GB 压成 100MB 的上一篇我们算了笔账一分钟 1080P 原始视频高达 10.5 GB。但你从 B 站下载回来的 40 分钟高码率视频拢共才 500 MB。中间这 98% 的数据去哪了答案是视频编码器干掉了你肉眼压根看不见的东西。大家好我是黒漂技术佬。这一篇我们直奔主题——视频编码的核心原理。不讲数学公式推导用你能听懂的人话把帧内预测、帧间预测、宏块、GOP、码率控制这些唬人概念全部拆干净。一、编码的核心思路找冗余然后扔掉视频数据里充满了三种冗余1.1 空间冗余同一帧内部打开一张照片你会发现相邻像素的颜色往往很接近蓝天背景里下一个像素大概率也是蓝的白色墙壁上一片区域都是接近的白。一个像素一个像素单独存99% 是浪费。1.2 时间冗余相邻帧之间这是视频压缩的大头。一段视频里前后两帧通常只有很小一部分在变化——新闻主播嘴在动背景一直不变足球场上草皮连续几十帧一模一样只有球和球员在位移。如果不利用这个把每一帧当成独立图片去存你就是个冤大头。1.3 视觉冗余人眼感知不到的部分上一篇讲的色度抽样就是利用人眼对颜色不敏感。编码器还会继续深挖人眼对高频细节细碎纹理的敏感度低于低频轮廓物体边缘对极亮和极暗区域的细节也迟钝。这些地方都可以用更少的数据糊弄过去。二、帧内预测一帧内部的猜谜游戏编码器把画面切成一个个宏块MacroblockH.264 的宏块是 16×16 像素。每个宏块独立编码时不直接存原始像素值而是看看周围的宏块左边、上边、左上角已经编码完的像素是什么。基于这些邻居预测当前宏块大概长什么样。只存残差Residual预测值和真实值之间的差值。因为相邻区域高度相似残差大多是接近 0 的小数字压缩算法处理起来极其高效。就好比你跟朋友描述一张图你不会逐个像素报颜色你会说左边那个蓝方块往右挪两格这比存全部像素省太多数据。三、帧间预测I 帧、P 帧、B 帧全家桶这是视频编码最大的杀手锏。编码器把帧分成三种类型3.1 I 帧Intra-coded关键帧完全独立编码的完整画面不依赖任何其他帧。像一个存档点解码器读到这里就能立刻恢复一整张图。I 帧体积最大但它是一切帧间预测的起点。3.2 P 帧Predicted前向预测帧P 帧只记录相对于前面已编码帧I 或 P的变化。如果两帧之间只有一个小人在动那 P 帧就只存这个小人移动了多少像素、背景部分直接复用前一帧的数据。一个 P 帧的大小可能只有 I 帧的 1/5 到 1/10。3.3 B 帧Bi-predicted双向预测帧比 P 帧更狠B 帧同时参考前面和后面的帧。比如视频中一个人走过一面墙B 帧可以从人还没到的前帧拿到墙的像素从人已经走过的后帧拿到另一部分拼出当前画面。B 帧压缩率最高但编解码复杂度也最高——因为解码时要等前后的参考帧都就绪。3.4 一张图讲清楚时间轴 → I₀ ←──── P₁ ←──── B₂ ←──── P₃ │ │ ↘ ↙ │ │ │ │ ×××× │ │ │ │ 双向参考 │ │ └── 参考 ──┘ └── 参考 ──┘ I 帧完整画面体积最大独立解码 P 帧只参考前面的帧记录变化部分 B 帧同时参考前帧和后帧体积最小四、GOP一组帧的团队作业一组连续的 I、P、B 帧的排列结构叫GOPGroup of Pictures图像组。一个典型的 GOP 结构I B B P B B P B B P ... I下一个GOP开始GOP 有两个关键参数GOP 长度两个 I 帧之间的帧数。长度越大I 帧比例越低整体压缩率越高但拖进度条时的 seek 延迟也越大因为要往前找最近的 I 帧开始解码。通常 1~3 秒一个 I 帧。参考帧数量P/B 帧可以向前/后参考多少帧。参考越多预测越准压缩率越高但解码器需要的缓存也越大。4.1 为什么你拖进度条会卡一下你拖到一个 B 帧上解码器不能直接解——它必须先找到前面最近的 I 帧解码那条链路I → P → P → …把前面的帧全部算完才能解出你拖到的这一帧。GOP 越长这个算完的过程越久卡顿越明显。所以直播场景通常用短 GOP比如 1 秒一个 I 帧追求低延迟点播可以适当拉长 GOP 来省带宽。五、H.264 vs H.265青出于蓝H.264也叫 AVCAdvanced Video Coding是过去 20 年互联网视频的绝对霸主你手机拍的视频、B 站的 1080P、Zoom 的视频会议大概率都在用 H.264。它优秀但老了——标准于 2003 年发布彼时 iPhone 还没出生。H.265也叫 HEVCHigh Efficiency Video Coding是继任者2013 年发布核心改进能力H.264 (AVC)H.265 (HEVC)宏块尺寸固定 16×1664×64 到 8×8 自适应CTU帧内预测方向9 种35 种压缩率基准同画质省 50% 码率4K/8K 支持吃力原生编码时间快慢 3~10 倍专利授权统一低价三方收费贵简单粗暴的结论H.265 能在 H.264 一半的码率下达到同等画质。一部 H.264 编码的 1080P 蓝光电影约 15 GB用 H.265 同等画质只需 7~8 GB。那为什么 H.265 还没一统天下专利费烂账。MPEG LA、HEVC Advance、Velos Media 三家分别收钱浏览器厂商尤其是 Mozilla、Google不乐意交于是 Google 自己搞了VP9后来又联合一堆巨头推AV1完全免费开源。编码格式的江湖技术强不是唯一规则钱和阵营才是。六、码率控制带宽有限怎么分配数据编码的最后一步给定一个目标码率比如 2 Mbps怎么把有限的数据预算分给每一帧6.1 CBR恒定码率不管画面是静态背景还是爆炸特效码率恒定。优点是网络带宽占用稳定适合直播推流缺点是画面复杂时清晰度会崩。6.2 VBR可变码率静态场景少给点数据高速运动/复杂画面多给点数据。适合点播、本地存档同等平均码率下画质明显优于 CBR。6.3 CRF恒定画质因子FFmpeg 用户的宠儿。你设定一个画质目标0~51越小越好推荐 18~28编码器自动分配码率来达到这个画质文件最终大小完全由编码器决定。CRF 18 接近视觉无损CRF 23 是大多数人的甜点。ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium output.mp4这条命令如果看不懂别急——FFmpeg 实战篇会细讲。七、一个编码实战的隐形坑presetH.264/H.265 编码器都有一个preset参数控制编码速度和压缩率的权衡。x264 的 preset 从快到慢分别是ultrafast → superfast → veryfast → faster → fast → medium → slow → slower → veryslow → placebomedium是默认。ultrafast比medium快 5~10 倍但压缩率会差 20~30%veryslow压缩率最好但编码时间是medium的 5~10 倍。placebo如其名比veryslow又慢不少压缩率提升微乎其微——纯安慰剂。实际使用时直播选veryfast本地转码选medium做存档压片可以上slow。本篇核心回顾概念一句话理解空间冗余一帧内相邻像素相似帧内预测省数据时间冗余前后帧大部分相同帧间预测省数据I 帧完整画面独立解码关键帧/存档点P 帧只记录跟前面帧的差异B 帧同时参考前后帧压缩率最高GOPI/P/B 帧的编组长度影响压缩率和 seek 延迟H.265 vs H.264同画质省一半码率但编码慢、专利贵CBR / VBR / CRF码率恒定 / 码率浮动 / 恒定画质preset快速编码还是极致压缩自己选我是黒漂技术佬下篇见。

相关新闻

Claude语义压缩层蒸发:从可控护栏到内生直觉的架构迁移

Claude语义压缩层蒸发:从可控护栏到内生直觉的架构迁移

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出现,我在 Slack 群里就看到三位同行同时发了同一个表情:一个倒计时归零的数字“0”。…

2026/7/1 21:37:30阅读更多 →
STM32与Si4731打造数字收音机:硬件设计与软件开发全解析

STM32与Si4731打造数字收音机:硬件设计与软件开发全解析

1. 项目背景与硬件选型解析这个项目本质上是一个基于STM32G0B1RE微控制器和Si4731收音机芯片的DIY数字收音机开发方案。作为一名嵌入式开发老手,我注意到这种组合在业余无线电爱好者圈子里最近特别流行——它完美平衡了性能、成本和开发难度。为什么选择STM32G0B1RE…

2026/7/1 21:37:30阅读更多 →
Anthropic归零层:大模型原生契约驱动的架构扁平化

Anthropic归零层:大模型原生契约驱动的架构扁平化

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发” “Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端窗口就停住了。不是因为震惊,而是因为熟悉。…

2026/7/1 21:37:30阅读更多 →
Java Web开发中XSS攻击的七种高效防护手段与实战指南

Java Web开发中XSS攻击的七种高效防护手段与实战指南

1. 项目概述:为什么XSS防护是Java开发者的必修课最近在review团队里几个新项目的代码,发现一个挺普遍的现象:很多兄弟对业务逻辑的实现很上心,各种设计模式、性能优化玩得飞起,但一到安全编码这块,尤其是针…

2026/7/1 22:52:44阅读更多 →
【计算机毕业设计案例】基于 SpringBoot 的宠物疫苗防疫管理服务系统的设计与实现 基于 SpringBoot 的宠物医院医疗资产数字化管理系统(程序+文档+讲解+定制)

【计算机毕业设计案例】基于 SpringBoot 的宠物疫苗防疫管理服务系统的设计与实现 基于 SpringBoot 的宠物医院医疗资产数字化管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/1 22:52:44阅读更多 →
对话式AI不是技术课,而是人机沟通契约重建

对话式AI不是技术课,而是人机沟通契约重建

1. 这不是“AI课”,而是一场面向所有人的对话能力重建实验“AI for Everyone: Conversational AI Explained”——这个标题里没有一个技术术语,却藏着过去五年最深刻的一次人机关系重构。我带过27个不同行业的AI工作坊,从社区老年大学的智能手…

2026/7/1 22:52:44阅读更多 →
构建安全资源下载器:从证书信任到完整性校验的实战指南

构建安全资源下载器:从证书信任到完整性校验的实战指南

1. 项目概述:为什么我们需要一个安全的res-downloader?在开发和运维的日常工作中,res-downloader这类资源下载工具几乎是标配。它可能是一个内部开发的脚本,也可能是一个开源的命令行工具,核心任务就是从指定的源&…

2026/7/1 22:52:44阅读更多 →
RPG Maker MV用Alpha ABS即时战斗资源包:含完整UI、手柄支持与可调战斗逻辑

RPG Maker MV用Alpha ABS即时战斗资源包:含完整UI、手柄支持与可调战斗逻辑

本文还有配套的精品资源,点击获取 简介:一套开箱即用的RPG Maker MV主动战斗系统(Alpha ABS),模拟《魔兽世界》式实时操作体验,所有攻击、技能、道具和法术都通过ABS技能触发,不依赖传统回合…

2026/7/1 22:52:44阅读更多 →
AI Agent评估不是测模型,而是校准人的业务判断力

AI Agent评估不是测模型,而是校准人的业务判断力

1. 项目概述:这不是在给AI打分,而是在校准你自己的判断力“How to Evaluate Your AI Agent”——这个标题乍看像是一份技术文档的冷启动指令,实则藏着一个被绝大多数人忽略的底层真相:评估AI Agent,本质上是在评估你自…

2026/7/1 22:47:43阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/1 4:42:14阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/1 5:19:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →