Update from Sync Service

This commit is contained in:
FNS Service
2026-04-28 10:02:11 +08:00
parent e9e8d3f050
commit a232a916fe

View File

@@ -1,303 +0,0 @@
---
created: 2026-04-28
type: concept
tags: [视频流, 流媒体, FFmpeg, HLS, WebRTC, CDN]
---
# 视频流传输技术全景指南
> 从采集到播放的完整技术栈 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 |
|--|------|-----|--------|
| **优势** | 低延迟推流<br>OBS 原生<br>简单成熟 | CDN 友好<br>自适应码率<br>DRM 支持 | 亚秒延迟<br>P2P/mesh<br>浏览器原生 |
| **劣势** | TCP 单连接<br>不自适应<br>Flash 已废弃 | 延迟高 (5-30s)<br>分片需转 TS | 复杂 (SDP/ICE)<br>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 — 视频处理瑞士军刀
```bash
# 转码
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`*