1、编码基础概念:什么是视频编码?为什么需要编码?有损与无损压缩的区别

各位同学好,我是老周。做视频编码这行十几年了,今天咱们聊聊最基础的问题——视频编码到底是什么。

说白了,视频编码就是把原始视频数据「压缩打包」的过程。你想想看,一部没压缩的1080p电影,一秒钟就要吃掉将近1.5GB的带宽。一部两小时的电影,光存储就得10TB以上。这谁受得了?

所以我们需要编码。编码的目的就一个:在尽量保持画质的前提下,把文件体积降下来。

1.1 为什么非要编码不可?

我刚开始做视频处理时,也想过这个问题:直接存原始画面不行吗?

不行。我给你算笔账:

分辨率 帧率 色深 原始码率 1小时体积
1920×1080 30fps 8bit YUV420 ~1.5 Gbps ~675 GB
3840×2160 60fps 10bit YUV420 ~12 Gbps ~5.4 TB
7680×4320 120fps 12bit YUV444 ~120 Gbps ~54 TB

看到没?不编码的话,一部8K电影能塞满一整块硬盘。而且网络传输根本跑不动——你家的千兆宽带,连一秒钟原始8K画面都传不完。

核心结论:视频编码不是「可选项」,而是「必选项」。没有编码,就没有流媒体、没有短视频、没有视频通话——整个视频产业都玩不转。

1.2 有损 vs 无损:鱼和熊掌

编码压缩分两种:有损压缩和无损压缩。这个区别,我当年踩过不少坑。

无损压缩

无损压缩,就是压缩完解压出来,跟原始数据一模一样。一个像素都不差。

常见的无损格式有:

  • FFV1——档案级无损编码,我用来存原始素材
  • H.264 Lossless——H.264的无损模式,但码率依然很大
  • Apple ProRes 4444——后期制作常用,其实是有损但视觉无损

无损压缩的压缩比大概在2:1到4:1之间。说实话,对于视频来说,这个压缩比远远不够。

我的经验:无损编码只适合两个场景——存档原始素材、或者做中间格式用于后期调色。日常分发和播放,千万别用无损,码率太大,用户等不起。

有损压缩

有损压缩就「聪明」多了。它利用人眼的视觉特性,把那些你看不太出来的细节扔掉,只保留关键信息。

常见的做法包括:

  • 色度子采样——人眼对亮度敏感,对颜色不敏感,所以把颜色信息砍掉一半
  • DCT变换+量化——把画面从像素域转到频率域,高频细节直接量化掉
  • 运动补偿——相邻帧之间只存变化的部分,背景不动就不重复存

有损压缩的压缩比能做到50:1甚至200:1。一部原始675GB的电影,用H.265压完可能只有2GB。画质嘛……嗯,看码率给得够不够。

注意:有损压缩是不可逆的。一旦压完,丢掉的信息就永远找不回来了。所以做后期制作时,千万别在原始素材上直接压有损——我见过有人把绿幕素材压成H.264,结果抠像时边缘全是马赛克,那叫一个惨。

1.3 编码的核心流程

为了让你更直观地理解编码到底在做什么,我画了一张流程图:

视频编码核心流程 视频编码核心流程 原始视频帧 分块 → DCT变换 量化(丢掉高频) 熵编码(无损压缩) 压缩码流(H.264/HEVC) 关键点 • 量化是唯一有损步骤 • 量化参数QP控制画质 • QP越大,画质越差,码率越低 避坑提示 • 不要对原始素材直接量化 • 多次重编码会累积画质损失 • 用CRF模式比固定QP更智能

流程其实不复杂:原始帧进来 → 切成小块 → 做DCT变换 → 量化丢掉高频 → 最后用熵编码无损压缩一遍 → 输出码流。

这里面最关键的一步就是量化。量化参数QP(Quantization Parameter)直接决定了画质和码率的平衡。QP越小,保留的细节越多,码率越大;QP越大,细节丢得越多,码率越小。

1.4 有损 vs 无损:怎么选?

我个人的选择原则很简单:

场景 推荐方式 原因
原始素材存档 无损或视觉无损 保留后期调整空间
后期调色/抠像 ProRes/DNxHR 需要保留色彩精度
网络分发 有损(H.264/H.265) 码率必须可控
直播推流 有损(低延迟模式) 实时性优先
监控录像 有损(高压缩比) 存储成本敏感

一句话总结:无损保真但费空间,有损省空间但丢细节。没有绝对的好坏,只有合不合适的场景。

1.5 我踩过的坑

最后分享一个真实教训。几年前我做一批4K素材的转码,为了省存储空间,直接用固定QP=28压了一遍。结果素材交付给调色师后,对方直接炸了——暗部全是色块,一拉曲线就出banding。

后来我才意识到:有损压缩的「损」在暗部区域特别明显。因为暗部的量化误差相对人眼感知更敏感。从那以后,我处理暗部多的素材时,都会适当降低QP,或者用10bit色深来缓解banding问题。

嗯,这就是经验。有些坑,不亲自踩一遍,光看书是学不到的。