Files
chill_notes/wiki/Resources/技术研究/视频流技术指南.md
2026-04-28 10:02:11 +08:00

7.8 KiB
Executable File
Raw Blame History

created, type, tags
created type tags
2026-04-28 concept
视频流
流媒体
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
优势 低延迟推流
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