音视频学习路线
一、先给你一张“全局脑图”(非常重要)
一帧视频从 Sensor 到对端播放器,完整链路是:
👉 视频“传输”真正从 Encoder 输出开始
👉 你要学的是:中间每一段在干什么、为什么要这样设计
二、完整学习路径(你可以按章节啃)
我按 8 大阶段给你拆解,每一阶段我都会说明:
-
✅ 学什么
-
❌ 不用纠结什么
-
🎯 工程中你要“会到什么程度”
第一阶段:视频基础(必须过,但不用深)
1️⃣ 像素 & 图像基础
你需要理解:
-
像素是什么
-
分辨率、帧率
-
RGB vs YUV
-
为什么视频系统一定用 YUV
🎯 工程目标:
看到 NV12 / YUV420,你知道它在内存里怎么排
2️⃣ YUV 全家桶(你已经在学了)
重点掌握:
-
YUV444 / 422 / 420 的采样本质
-
NV12 / NV21 / I420 / YU12 的内存布局
-
为什么 ISP 输出几乎都是 NV12
🎯 工程目标:
能正确告诉 DMA / Encoder:stride、plane、format
第二阶段:Sensor & ISP(决定“源头质量”)
3️⃣ Sensor 输出到底是什么?
你要搞清楚:
-
MIPI CSI-2 是传输协议
-
Sensor 输出是 Bayer RAW
-
RGGB / BGGR / GRBG
-
-
Sensor 本身不输出 YUV(99% 情况)
🎯 工程目标:
知道 RAW ≠ 图像,必须过 ISP 才“能看”
4️⃣ ISP 在干什么?
ISP 的工作链路:
🎯 工程目标:
知道 ISP 是“画质之王”,不是简单转换格式
第三阶段:视频编码(H.264 / H.265 核心)
⚠️ 这是你作为流媒体工程师的核心技能区
5️⃣ 编码器到底干了什么?
你要理解:
-
编码 ≠ 压缩图片
-
编码是:
-
空间压缩(帧内)
-
时间压缩(帧间)
-
核心概念:
-
GOP
-
I / P / B 帧
-
参考帧
-
运动估计
🎯 工程目标:
知道“为什么 B 帧一定增加延迟”
6️⃣ H.264 码流结构(非常重要)
你需要系统理解:
码流层级
NALU 是什么?
-
SPS / PPS / IDR / Slice
-
Annex-B vs AVCC
🎯 工程目标:
能从一段裸码流中拆出 NALU,并判断关键帧
第四阶段:封包(从“码流”到“能发出去”)
7️⃣ 为什么不能直接把 H.264 往网络一丢?
问题:
-
MTU 限制(1500 字节)
-
丢包
-
顺序错乱
解决方案:
👉 RTP(Real-time Transport Protocol)
8️⃣ RTP 是怎么封 H.264 的?
你要学:
-
RTP Header(12 字节)
-
Sequence Number
-
Timestamp
-
SSRC
H.264 over RTP:
-
Single NALU
-
FU-A(分片)
-
STAP-A(聚合)
🎯 工程目标:
会抓包,看 Wireshark 知道一帧怎么被拆成多个 RTP 包
第五阶段:信令(RTSP / WebRTC)
9️⃣ RTSP 是干嘛的?
RTSP ≠ 传视频
RTSP 是:
-
SETUP
-
PLAY
-
PAUSE
-
TEARDOWN
🎯 工程目标:
知道 SDP 里描述了什么(payload type、fmtp)
10️⃣ SDP 你要看懂哪些字段?
重点字段:
🎯 工程目标:
知道 SPS/PPS 怎么通过 SDP 给播放器
第六阶段:接收端(解码 & 显示)
11️⃣ 解封包流程
你要理解:
-
丢包怎么处理
-
P / B 帧丢了会发生什么
12️⃣ 解码器在等什么?
解码器需要:
-
SPS
-
PPS
-
IDR
🎯 工程目标:
知道“为什么丢了 SPS,画面直接黑”
第七阶段:工程级问题(IPC / 运动相机必会)
13️⃣ 延迟从哪里来?
延迟来源:
-
B 帧
-
编码缓存
-
RTP jitter buffer
-
解码 reorder buffer
🎯 工程目标:
能设计 低延迟模式(< 200ms)
14️⃣ 丢包 & 抖动怎么办?
策略:
-
FEC
-
重发(TCP / WebRTC)
-
IDR 插入
-
GOP 控制
第八阶段:实战能力(你最终要达到)
你最终应该能做到:
-
✅ 手写一个 H.264 RTP Sender
-
✅ 用 Wireshark 判断:
-
I 帧
-
FU-A
-
丢包位置
-
-
✅ 调编码参数控制:
-
码率
-
延迟
-
画质
-
-
✅ Debug:
-
花屏
-
绿屏
-
马赛克
-
首帧慢
-
浙公网安备 33010602011771号