7.8 KiB
Executable File
7.8 KiB
Executable File
created, type, tags
| created | type | tags | ||||||
|---|---|---|---|---|---|---|---|---|
| 2026-04-28 | concept |
|
视频流传输技术全景指南
从采集到播放的完整技术栈 v2
视频播放的技术本质:6步流水线
采集(Source) → 编码(Encode) → 封装(Mux) → 传输(Transport) → 解封装(Demux) → 解码(Decode) → 渲染(Render)
各环节延迟参考:
| 环节 | 延迟 | 瓶颈类型 |
|---|---|---|
| 编码 | 0.1s | 编码瓶颈 |
| 网络 | 0.5s | 网络瓶颈 |
| 缓冲 | 2s | 缓冲策略 |
| 解码 | 0.05s | 解码瓶颈 |
核心公式:总延迟 = 编码 + 网络 + 缓冲 + 解码
延迟↓ = 缓冲↓ = 卡顿风险↑(三元悖论)
一、视频基础三要素
帧率 & 分辨率
| 帧率 | 应用场景 |
|---|---|
| 24fps | 电影 |
| 30fps | 电视 |
| 60fps | 运动/游戏 |
| 120fps | 电竞 |
| 分辨率 | 像素数 |
|---|---|
| 720p | 1280×720 |
| 1080p | 1920×1080 |
| 4K | 3840×2160 |
| 8K | 7680×4320 |
原始数据量对比
| 规格 | 原始 RGB | 编码后 | 压缩比 |
|---|---|---|---|
| 1080p@60fps | 373 MB/s | 8 Mbps (H.264) | 47× |
| 4K@60fps HDR | 1.5 GB/s | 25 Mbps (H.265) | 60× |
色彩空间
| 模型 | 用途 | 特点 |
|---|---|---|
| RGB | 屏幕显示 | 加法混色 |
| YUV | 视频传输 | 亮度(Y) + 色度(UV),节省 50% 数据 |
色度子采样
| 采样 | 色度 | 应用 |
|---|---|---|
| 4:4:4 | 全色度 | 广播级、后期 |
| 4:2:2 | 色度减半 | TV 广播 |
| 4:2:0 | 色度 1/4 | 流媒体标准(Netflix/YouTube) |
二、编码:压缩的艺术
为什么要编码?
带宽永远不够!有损压缩 + 空间冗余 + 时间冗余 + 感知冗余 = 压缩 100-1000 倍。
主流视频编码标准
| 标准 | 年份 | 主要场景 | 压缩效率 | 版权 |
|---|---|---|---|---|
| H.264 (AVC) | 2003 | YouTube/Netflix/视频通话 | 基准 | 专利 (MPEG-LA) |
| H.265 (HEVC) | 2013 | 4K/8K 蓝光流媒体 | 省 50% vs H.264 | 专利 (授权费高) |
| VP9 | 2013 | YouTube (Google 免费) | 与 H.265 相当 | Royalty-free |
| AV1 | 2018 | 流媒体新标准 (8K/HDR) | 省 30% vs H.265 | AOM 联盟 (免费) |
| VVC (H.266) | 2020 | 尚未普及 | 比 AV1 再省 30% | 专利池未稳定 |
AV1 = 免专利费 + 压缩率最优 + 全面支持 → 未来主流
编码核心:I 帧 / P 帧 / B 帧
| 帧类型 | 说明 | 压缩率 |
|---|---|---|
| I 帧 | 完整画面 | 最低 |
| P 帧 | 与前一帧的差异 | 中 |
| B 帧 | 利用前后帧信息 | 最高 |
GOP (Group of Pictures):帧排列模式,如 I B B P B B P B B I
编码技术流程
DCT 变换(空域→频域)→ 量化(丢弃高频)→ 熵编码(Huffman/CABAC)→ 运动估计(ME)→ 运动补偿(MC)→ 压缩码流
三、封装与容器
容器 ≠ 编码
容器只负责"打包",MP4 里可以是 H.264 也可以是 AV1。
| 容器 | 特点 | 适用场景 |
|---|---|---|
| MP4 | 最通用 | 点播/短视频 |
| MKV | 开源灵活 | 高清电影 |
| FLV | RTMP | 直播(将淘汰) |
| WebM | 网页嵌入 | VP9/AV1 |
| MOV | Apple 生态 | iOS/macOS |
容器包含的内容
- 🎬 视频流(H.264/H.265/AV1)
- 🎵 音频流(AAC/MP3/Opus)
- 📝 字幕流(SRT/ASS/WebVTT)
- ℹ️ 元数据(时长/章节/缩略图)
四、传输协议
视频传输完整链路
①采集端 → ②编码 → ③封装 → ④CDN分发 → ⑤播放器
五大协议对比
| 协议 | 延迟 | 传输层 | 自适应码率 | DRM | 适用场景 |
|---|---|---|---|---|---|
| RTMP | 1-3s | TCP | ✗ | ✗ | 直播推流 |
| HLS | 5-30s | HTTP | ✓ | ✓ | Apple 生态/直播 |
| DASH | 2-8s | HTTP | ✓ | ✓ | 点播 |
| WebRTC | <1s | UDP | ✓ | △ | 实时通讯/低延迟 |
HLS 详解
服务器:seg1.ts(6s) → seg2.ts(12s) → seg3.ts(18s) → ...
playlist.m3u8 (播放列表:码率/分片/时间戳)
↓ CDN
播放器:①下载 m3u8 → ②解析码率 → ③按序下载 TS → ④边下边播
三大协议优劣势
| RTMP | HLS | WebRTC | |
|---|---|---|---|
| 优势 | 低延迟推流 OBS 原生 简单成熟 |
CDN 友好 自适应码率 DRM 支持 |
亚秒延迟 P2P/mesh 浏览器原生 |
| 劣势 | TCP 单连接 不自适应 Flash 已废弃 |
延迟高 (5-30s) 分片需转 TS |
复杂 (SDP/ICE) UDP 丢包不重传 |
五、端到端延迟分析
各场景延迟
| 场景 | 延迟 | 策略 |
|---|---|---|
| 视频会议 | <1s | 延迟优先 |
| 低延迟直播 | 2-3s | 平衡 |
| 标准直播 | 5-10s | 流畅优先 |
| 点播 | 无限制 | 画质优先 |
流畅·画质·延迟 三元悖论
⚡ 低延迟 ←→ 🎯 高流畅 ←→ 💎 高画质
选择策略:
- 实时通话 → 延迟优先
- 秀场直播 → 流畅优先
- 点播 → 画质优先
六、CDN:内容的高速公路
CDN 核心价值
物理距离↓ → 延迟↓ → 加载速度↑ → 卡顿率↓ → 源站压力↓
| CDN 提供商 | 说明 |
|---|---|
| Cloudflare | 全球边缘网络 |
| Akamai | 最大 CDN |
| AWS CloudFront | 亚马逊 CDN |
| 阿里云 CDN | 国内最大 |
| 腾讯云 CDN | 游戏/直播优势 |
七、播放器:最后一公里
播放器架构
①容器文件(MP4/HLS/DASH)
→ ②解封装(Demuxer) → 分离视/音/字幕
→ ③视频解码(H.264→YUV) → 硬件优先
→ ④音频解码(AAC→PCM)
→ ⑤音画同步(PTS/DTS 时间戳)
→ ⑥屏幕输出(GPU/显示器)
硬件解码 vs 软件解码
| 硬件解码 (GPU/DSP) | 软件解码 (CPU) | |
|---|---|---|
| 优势 | 省电、高效、低发热 | 兼容性好、支持所有 codec |
| 劣势 | 特定平台支持 | 耗电、CPU 占用高 |
MSE + ABR
MSE (Media Source Extensions):JavaScript 边下载边喂数据给 <video> 标签 → 浏览器也能流式播放。
- hls.js (HLS)
- Shaka Player (HLS+DASH)
- flv.js (FLV→MSE)
ABR (自适应码率) 决策流程:
带宽估算 → Buffer 水位检测 → 切换到最优码率
WiFi→4K | 4G→1080p | 卡顿→720p
Netflix/YouTube/Bilibili 均采用 ML ABR(强化学习预测最优码率)。
八、实战:构建直播系统
完整架构
📷 采集(OBS/手机SDK)
→ ⚙️ 编码推流(FFmpeg/OBS, RTMP)
→ 🖥️ 流媒体服务器(SRS/nginx-rtmp)
→ 🌐 CDN 分发(全球边缘节点)
→ 📱 播放器(HLS/DASH 拉流)
SRS (Simple Realtime Server)
国内最流行的开源流媒体服务器:
- RTMP 推流
- WebRTC <1s 低延迟
- HLS/DASH 转码分发
- DVR 录制
FFmpeg — 视频处理瑞士军刀
# 转码
ffmpeg -i in.mp4 -c:v libx265 out.mp4
# 推流
ffmpeg -i in.mp4 -c copy -f flv rtmp://...
# 截图
ffmpeg -i in.mp4 -ss 00:00:05 -frames:v 1 out.jpg
九、总结:视频流技术全景图
| 环节 | 关键技术 |
|---|---|
| 📷 采集 | 摄像头、麦克风 |
| 🗜️ 编码 | H.264/H.265/VP9/AV1、I/P/B 帧、GOP |
| 📦 封装 | MP4/MKV/FLV/WebM(容器≠编码) |
| 🌐 传输 | RTMP 推流、HLS 直播、DASH 点播、WebRTC 实时 |
| 🛣️ 分发 | CDN 边缘、就近加速、扛住并发 |
| 🎮 播放 | 解封装、解码、MSE/ABR |
关键指标:
- 压缩效率:AV1 > H.265 > H.264
- 延迟:WebRTC (<1s) < DASH (2-8s) < HLS (5-30s)
- CDN = 就近分发 + 扛并发
理解每个环节,才能在故障时快速定位瓶颈!
基于《视频流传输技术全景指南 v2》PPT 整理,原始文件:/obsidian/参考资料/视频流技术指南_v2.pptx