《视频基础学习 —— 一帧视频从sensor到网络,经历了什么?》
一帧视频从sensor到网络,经历了什么?
1) 采集(Camera) 2) 图像处理(ISP) 3) 压缩编码(H.264) 4) 打包(RTP/TS) 5) 传输(UDP/TCP) 6) 播放(解包 + 解码 + 显示)
1.采集:摄像头“拍到了”什么
摄像头传感器(sensor)本质上像一个“亮度采集器”。
它输出的原始数据通常是:
-
RAW Bayer(最常见)
-
你可以理解成:每个像素只记录了 R/G/B 其中一种颜色的亮度
-
所以看起来不是完整彩色图片
-
这一步输出还不能直接显示,也不适合直接编码。
2.ISP:把 RAW 变成“能看的图”
ISP(图像信号处理器)做很多你肉眼能感知的处理,比如:
-
去马赛克(demosaic):把 Bayer 变成完整彩色
-
白平衡、曝光
-
去噪、锐化
-
色彩校正
处理完后,一般会输出:
-
YUV(最常见,编码器最爱)
你可以把 YUV 理解成:
-
Y:亮度(画面的“清晰度骨架”)
-
U/V:颜色(画面的“颜色皮肤”)
3. 编码:为什么要 H.264?
如果你把“每一帧 YUV 原始数据”直接发网络,带宽会爆炸。
举个概念级例子(不算太精确,只帮你感受量级):
-
1080p(1920×1080)
-
30 fps
-
原始 YUV420 一帧约 3MB 左右(概念)
-
30fps 就是 90MB/s(概念)
网络、存储都顶不住。
所以要 压缩,H.264就是压缩标准。
H.264做了两件事:
-
帧内压缩:像 JPEG 那样压缩一帧内部
-
帧间压缩:利用“下一帧跟上一帧很像”,只存差异(这才是省带宽的关键)
编码后输出的是:
-
H.264 码流(一串字节),不是“图片”。
4.打包:为什么还要 RTP / TS?
H.264 码流是一串字节,直接丢到 UDP/TCP 里会有问题:
-
网络 MTU 限制(一次包不能太大)
-
丢包、乱序、重传策略
-
时间戳/同步
所以要“打包成适合传输的格式”:
常见两种:
-
RTP(实时流媒体最常见:RTSP、WebRTC 等)
-
MPEG-TS(直播/广播常见)
在 IPC/安防里大概率会先遇到:
-
RTSP(RTP) + H.264
5.传输:UDP 还是 TCP?
最常见:
-
RTSP 通常用 TCP 做控制(告诉你要哪个流)
-
RTP 视频数据通常走 UDP(低延迟)
-
也可以 RTP over TCP(更稳但更延迟)
你先记一句话就够了:
UDP:延迟低但可能解释包
TCP:更可靠但可能卡顿、延迟高
6.播放端:解包 + 解码 + 显示
接收端流程反过来:
网络数据 → RTP 解包 → 拿到 H.264 → 解码成 YUV → 转成 RGB → 显示
相关名词解释:
-
RAW Bayer:传感器出来的原始数据
-
ISP:把 RAW 变成能用的 YUV
-
YUV:编码器最常用的图像格式
-
H.264:把视频压缩成码流
-
RTP/RTSP:把 H.264 包成网络能传的实时格式
浙公网安备 33010602011771号