一、核心概念:容器、编码与协议

在深入架构之前,必须先理清三个核心概念的关系:

  • 容器格式(封装格式) :视频文件的“包装盒”,决定文件后缀名(如.mp4.flv.ts)。它规定如何将视频、音频、字幕等轨道打包在一起。

  • 编码格式(压缩算法) :视频内容的“压缩方式”,决定画质和文件大小。H.264 是目前兼容性最广的“万金油”,H.265/HEVC 可在同等画质下节省约 40%-50% 的带宽,AV1 是代表未来的免专利费新贵。

  • 传输协议:数据从源头到达目的地的“运输规则”,决定延迟、稳定性和适用场景。

点播的标准组合MP4 容器 + H.264 视频编码 + AAC 音频编码

二、视频点播(VOD)架构

VOD 系统由 存储、转码、分发 三大核心组件构成。

2.1 存储层:对象存储是标准答案

视频文件应存储在对象存储(如 AWS S3、阿里云 OSS)中,而非数据库或文件存储。对象存储具有近乎无限的扩容能力、极低的成本,且天生与 CDN 集成。

存储优化策略

  • 生命周期管理:新上传的“热”视频放标准存储,随时间推移自动迁移到低频访问归档存储,可节省 70% 以上成本。

  • 多副本冗余:跨可用区存储多份数据副本,保障高可用。

2.2 转码层:不只是格式转换

为什么不能直接播放原始 MP4?转码解决三个核心问题:

  1. 自适应码率(ABR) :生成同一视频的多个分辨率版本(1080p/720p/480p/360p),播放器根据用户实时网速自动切换,实现“不卡顿”的观看体验。

  2. 兼容性保障:统一转为 H.264 + AAC 的“万金油”组合,确保所有设备都能播放。

  3. 拖拽秒开(Fast Start) :将 MP4 文件的元数据索引(moov)从尾部移到头部,实现“拖哪播哪”。

云厂商的转码服务通常基于 GPU 加速集群,支持 H.264/H.265/AV1 等编码格式,可按分钟计费。

2.3 分发层:CDN 是必选项

CDN 将视频缓存到全球边缘节点,实现就近访问。主流云厂商整合了 2800+ 边缘节点,首屏加载时间可控制在 500ms 以内

三、直播架构与协议详解

直播的核心流程是:推流 → 云端处理 → 分发 → 播放

3.1 推流协议(上传)

  • RTMP(Real-Time Messaging Protocol) :直播推流的“事实标准”,基于 TCP,延迟 1-5 秒,几乎所有推流工具(OBS、硬件编码器)都支持。缺点:需要 Flash 或专用播放器,现代浏览器原生不支持。

  • RTSP(Real Time Streaming Protocol) :安防摄像头的“母语”,与 RTP 配合使用,延迟极低(毫秒级)。缺点:穿透性差,浏览器不支持。典型场景:监控摄像头取流,然后转成 RTMP 推给云平台。

3.2 分发协议(播放)

  • HLS(HTTP Live Streaming) :Apple 开发,基于 HTTP,将视频切成 .ts 小片段 + .m3u8 索引文件。优点:跨平台兼容性最好,支持自适应码率缺点:延迟较高(10-30 秒)

  • HTTP-FLV:基于 HTTP 长连接,延迟 1-3 秒,适合 Web 端低延迟直播。

  • WebRTC:基于 UDP,延迟 < 1 秒,适合视频会议、连麦 PK 等强互动场景。

3.3 协议选型速查表

协议

职责

延迟

适用场景

RTMP

推流(上传)

1-5 秒

主播开播、OBS 推流

RTSP+RTP

取流(控制+传输)

毫秒级

安防摄像头、视频门禁

HLS

分发(播放)

10-30 秒

手机 App、网页大规模观看

HTTP-FLV

分发(播放)

1-3 秒

Web 端低延迟直播

WebRTC

实时互动

< 1 秒

视频会议、连麦 PK

现代直播标准流水线

摄像头(RTSP)→ 网关(转 RTMP)→ 云平台(转 HLS/WebRTC)→ 观众

四、点播 vs 直播:技术差异

维度

点播(VOD)

直播(Live)

内容特性

静态文件,可预缓存

实时流,短暂即逝

编码策略

多用 B 帧(高压缩率),精细量化保画质

优先 P 帧(低延迟),禁用 B 帧减少参考依赖

转码复杂度

需处理多种格式,生成多码率版本

通常只处理有限编解码器(H.264+AAC)

分发方式

CDN 缓存静态文件

实时分发,需低延迟保障

五、云服务实践:为什么“上云”是必选项

  1. 存储:对象存储的成本远低于自建,且具备 12 个 9 的数据持久性。

  2. 转码:云厂商提供 GPU 加速转码集群,按分钟计费,无需自建 FFmpeg 集群。

  3. 分发:云 CDN 拥有全球百万级节点和 BGP 带宽,自建无法企及。

  4. 成本优化:使用抢占式实例(Spot Instance)+ K8s 弹性调度,可大幅降低计算成本。

六、避坑指南

  1. 不要把视频存数据库:数据库存视频链接(URL),视频文件本身放对象存储。

  2. 不要把数据库跑在 K8s 里:K8s 管“无状态计算”,云管“有状态数据”。

  3. 不要用 RTSP 做 Web 直播:浏览器不支持,需转成 RTMP 再分发。

  4. 不要省转码的钱:面向公众的 Web/App 播放,转码是“必选项”,云转码按分钟计费,性价比极高。


核心总结对象存储 + 转码 + CDN 是点播的标准答案;RTMP 推流 + HLS/WebRTC 分发 是直播的最佳实践。把钱花在云服务上,把精力花在业务逻辑上。