摘要:用生活化比喻彻底搞懂视频的底层构成。从翻页动画理解帧与帧率,从像素网格看懂分辨率,再深入 RGB 与 YUV 的色彩分离思想,拆解 YUV444 / 422 / 420 的存储差异,最后用一道计算题掌握码率与文件大小的关系。
1. 视频的本质:一连串的"画"
你小时候一定玩过翻页动画:一本便签本,每一页画一个略有不同的小人,快速翻动,小人就"动"了。
视频就是这么回事------很多张连续的静态画面,以极快的速度切换,人眼因为"视觉暂留"现象,感觉画面动了起来。
每一张静态画面就叫 一帧 。
英文 Frame,你可以记成"相框",一框一画。
2. 帧率:翻页的速度
每秒显示多少帧,就是帧率,单位 fps (Frames Per Second) 。
| 常见帧率 | 观感比喻 |
|---|---|
| 24fps | 电影质感,轻微的动态模糊,很艺术 |
| 30fps | 日常视频,流畅但能感觉到一点点"数码味" |
| 60fps | 非常丝滑,像是透过一扇窗看真实世界 |
| 120fps+ | 超级滑,常用于慢动作回放 |
关键理解:帧率越高,画面越流畅,但一秒内要处理的画面数量也越多,对计算和存储的压力就越大。
3. 分辨率:画面的像素网格
每一帧画面,实际上是被切成一个网格,每个格子里填一种颜色。这一个格子就是一个 像素 。
分辨率 就是网格的行数和列数。
-
1920×1080:横 1920 个像素,竖 1080 个像素,总共约 207 万像素
-
3840×2160(4K):约 829 万像素
-
7680×4320(8K):约 3317 万像素
形象化:把图像想象成马赛克拼图,分辨率越高,马赛克的小方块就越多、越小,画面就越精细。但方块多了,需要记录的信息量就爆炸式增长。
4. 色彩系统:RGB 与 YUV 的区别
4.1 RGB:光的加法
显示器的每个像素由红 (Red)、绿 (Green)、蓝 (Blue) 三个"小灯泡"组成。
想要黄色?红+绿一起亮。想要白色?三色全亮。这就是 RGB 色彩空间,加法混色。
采集和显示本质都是 RGB,但直接用它存视频非常"浪费"。
4.2 YUV:亮度与色彩的分离
人眼有个特点:对亮度变化极其敏感,对颜色细节却比较迟钝。
比如你很难注意到草地上一小片树叶的颜色微小偏移,但如果亮度突然改变,你立刻会察觉。
YUV 正是利用这一点,把画面拆成两层:
-
Y(亮度,Luma):黑白信息,勾画出画面轮廓和明暗
-
U、V(色度,Chroma):颜色信息,负责给黑白图上色
生活比喻 :
YUV 就像 一张清晰的黑白照片 ,再覆盖 两张分辨率可以低一些的彩色半透明纸,一张偏蓝 (U),一张偏红 (V)。最终叠起来,看起来和全彩照片几乎一样。但你存那两张彩色纸时,不需要存满分辨率,大大节省空间。
RGB → YUV 转换(无需背公式,了解即可)
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
几乎所有视频编码、传输、电视广播,内部都使用 YUV。
5. YUV 采样:444、422、420 到底差在哪
既然人眼对色度不敏感,我们就可以 让多个像素共用一组颜色信息,从而压缩数据。这就是 YUV 采样格式的含义。
用 J:a:b 表示一个 4 像素宽的块里,Y、U、V 的采样比例 。
(通常 J 固定为 4,表示亮度 Y 每一列都采样)
5.1 YUV444
-
每个像素都有自己独立的 Y、U、V
-
信息无损,色彩最精细,但体积最大
-
比喻:黑白照片和彩色纸都是全分辨率
text
像素: 1 2 3 4
Y: Y1 Y2 Y3 Y4
U: U1 U2 U3 U4
V: V1 V2 V3 V4
5.2 YUV422
-
亮度 Y 每个像素都有
-
色度 U、V 每两个像素共用一组
-
水平方向上色彩信息减半,人眼几乎看不出
-
比喻:彩色纸的宽度剪掉一半,叠上去依然够用
text
像素: 1 2 3 4
Y: Y1 Y2 Y3 Y4
U: U1 U3
V: V1 V3
5.3 YUV420
-
亮度 Y 每个像素都有
-
色度 U、V 在水平和垂直方向上都隔一个像素采样,即 2×2 的四个像素共用一组 UV
-
数据量相比 YUV444 减少一半,最主流
-
比喻:彩色纸的长宽都只保留一半,但因为人眼对颜色不敏感,很难察觉劣化
text
像素: 1 2 3 4
5 6 7 8 (第二行)
Y: Y1 Y2 Y3 Y4
Y5 Y6 Y7 Y8
U: U1 U3 (第二行没有新的U)
V: V1 V3 (第二行没有新的V)
数据量计算对比(假设一个像素的 Y、U、V 各占 1 字节):
-
YUV444:每个像素 3 字节
-
YUV422:平均每像素 2 字节(Y:1 + (U+V)/2 = 1+1 = 2)
-
YUV420:平均每像素 1.5 字节(4 个像素:Y 占 4 字节,U 1 字节,V 1 字节,共 6/4=1.5)
一帧 1920×1080 的 YUV420 原始数据大小 :
1920 × 1080 × 1.5 = 3,110,400 字节 ≈ 2.97 MB
同样分辨率 RGB 每像素 3 字节:1920×1080×3 ≈ 5.93 MB,正好是两倍。
这就是为什么视频都用 YUV420:几乎省一半空间,画质损失肉眼难辨。
6. 色深:颜色的精度
色深(Bit Depth) 指每个颜色分量用多少比特来表示。
-
8-bit:每个分量 0~255,共 256 级灰度(或色彩),可显示约 1670 万色
-
10-bit:每个分量 0~1023,1024 级,约 10.7 亿色,渐变更平滑,减少色带
生活比喻 :
色深好比楼梯的台阶。8-bit 是 256 级台阶,从纯黑到纯白;10-bit 是 1024 级台阶,过渡更细腻。如果台阶太少,天空渐变就会出现一道道线(色带现象)。
HDR 视频通常要求 10-bit 色深,才能展现更宽的明暗范围。
7. 码率:视频的"流量"
码率(Bitrate) 是单位时间内用来表示视频的数据量。
单位通常是 kbps (千比特每秒) 或 Mbps (兆比特每秒)。
1 Mbps = 1000 kbps(简化计算时常用 1000,实际二进制是 1024,但业界两种都用)
码率决定视频的 画质和体积:
-
高码率:每秒钟分配的数据多,画面精致,文件大
-
低码率:数据量少,可能模糊、出现马赛克,文件小
比喻 :
视频像一条河流,每一秒流过的水量就是码率。水量越大,滋润的画面细节越多;水量太小,土地就会干裂(画质下降)。
常见码率参考(H.264编码,1080p@30fps):
-
低质量:2~4 Mbps
-
标准:5~8 Mbps
-
高质量:10~20 Mbps
-
极致:50 Mbps+
8. 码率与文件大小计算(带例题)
公式非常简单:
文件大小 (bit) = 码率 (bps) × 时间 (秒)
若用字节:文件大小 (Byte) = 码率 (bps) × 时间 (s) ÷ 8
例题 1:在线视频估算
一个 1080p 视频,码率 5 Mbps,时长 10 分钟,文件多大?
-
时间:10 min = 600 秒
-
文件大小 = 5 Mbps × 600 s = 3000 Mb
-
转换成更熟悉的单位:3000 Mb ÷ 8 = 375 MB
答:约 375 MB。
例题 2:直播推流码率选择
你有一台 4K 摄像机,原始数据是 YUV420,8-bit,30fps,分辨率 3840×2160。若不经压缩直接用原始数据推流,码率多高?现实吗?
-
每帧大小:3840 × 2160 × 1.5 Byte = 12,441,600 Byte ≈ 11.9 MB
-
每秒 30 帧:11.9 MB × 30 = 357 MB
-
码率:357 MB/s × 8 = 约 2856 Mbps ≈ 2.8 Gbps
家庭宽带上行通常只有几十 Mbps,根本不可能。所以必须通过 H.264/H.265 等视频编码疯狂压缩,把 2.8 Gbps 压到 20~50 Mbps,才适合网络传输。
9. 小结:一张地图串起所有概念
| 概念 | 核心含义 | 一句话比喻 |
|---|---|---|
| 帧 | 视频的一幅静态画面 | 翻页动画书的一页 |
| 帧率 | 每秒显示多少帧 | 翻页的速度 |
| 分辨率 | 每帧的像素网格大小 | 马赛克拼图的小方块数量 |
| RGB | 红绿蓝三原色模型 | 三盏可调亮度的灯泡叠加颜色 |
| YUV | 亮度Y + 色度UV的分离模型 | 黑白底片 + 两张低清彩色薄膜 |
| YUV420 | 亮度全分辨率,色度 2×2 共用 | 彩色纸长宽各裁掉一半,依然够用 |
| 色深 | 每个颜色分量的比特数 | 台阶的级数,级数越多过渡越顺滑 |
| 码率 | 每秒视频的数据量 | 河流每秒流过的水量 |
| 编码 | 压缩原始视频的算法 | 把大象塞进冰箱还要保持形状 |
学习路径建议 :
理解了这些基础,下一步就可以深入 视频编码(H.264/H.265)的 I 帧、P 帧、B 帧 ,以及 GOP、DTS/PTS 时间戳 等内容。基石已经铺好,后面再讲编码与封装,你会觉得一通百通。