一篇读懂:流媒体协议

4 阅读4分钟

一、为什么要关注流媒体协议?

因为协议决定了:你的视频能不能播、卡不卡、延迟多少、能用在什么场景、开发成本多高、服务器费用多少。

选错协议 = 要么用户体验差(卡顿/延迟高),要么开发成本翻倍,要么服务器账单爆炸。

二、主流协议全维度对比表

维度HLSDASHHTTP-FLVRTMPWebRTC
全称HTTP Live StreamingDynamic Adaptive Streaming over HTTPFLV over HTTPReal-Time Messaging ProtocolWeb Real-Time Communication
制定方AppleMPEG 国际标准组织社区(B 站推广)Adobe(Flash 时代)W3C / IETF
延迟10-30s(高)10-30s(高)1-3s(低)1-3s(低)<1s(超低)
兼容性★★★★★ 全平台最优★★★★ 需 JS 库★★★ 需 flv.js★★ 推流端好,播放端差★★★ 现代浏览器
是否支持点播⚠️ 主要用于直播
是否支持直播✅(仅推流)
自适应码率✅ 内置✅ 内置(最强)⚠️ 需额外实现
CDN 友好度★★★★★ 标准 HTTP★★★★★ 标准 HTTP★★★★ HTTP 长连接★★ 专用端口,CDN 贵★ P2P,难用 CDN
服务器成本低(普通 HTTP CDN)低(普通 HTTP CDN)低(HTTP CDN)高(需专用流媒体服务器)中(需 TURN/STUN 服务器)
技术难度★★ 简单★★★ 中等★★★ 中等★★★★ 复杂★★★★★ 最复杂
前端播放依赖Safari 原生 / 其他浏览器需 hls.js需 dash.js 或 shaka-player需 flv.js / mpegts.js不用于播放端浏览器原生 API
清晰度上限4K/8K 均可4K/8K 均可4K 可,无自适应取决于推流端通常 1080p
典型使用者Apple TV+、抖音点播、大多数视频平台YouTube、Netflix、Bilibili 海外B 站直播、斗鱼OBS 推流、直播推流端Zoom、Google Meet、连麦

三、各协议优缺点详解

1. HLS — 最通用的选择

优点缺点
iOS/Android/PC 全兼容延迟高(10-30s),不适合强实时
CDN 分发成本最低(纯 HTTP)切片文件多,小文件 IO 开销大
内置多码率自适应首次加载慢(需先下载 m3u8 再下载切片)
生态最成熟,工具链最全

一句话:不知道选什么就选 HLS,错不了。

2. DASH — 最灵活的标准

优点缺点
国际标准,不受单一厂商控制iOS Safari 不原生支持
自适应码率算法最先进需要 JS 库(dash.js),增加包体积
支持更多编码格式(H.265/AV1/VP9)配置复杂度高于 HLS
支持 DRM 加密(Widevine/PlayReady)

一句话:追求极致画质+版权保护选 DASH(Netflix/YouTube 的选择)。

3. HTTP-FLV — 低延迟直播首选

优点缺点
延迟低(1-3s)不支持 iOS Safari
基于 HTTP,CDN 友好不支持多码率自适应
实现相对简单FLV 格式老旧,未来趋势不明
B 站验证过的大规模方案无法做点播(不支持 seek)

一句话:国内直播低延迟首选,B 站/斗鱼在用。

4. RTMP — 推流端的事实标准

优点缺点
推流生态成熟(OBS/FFmpeg 直推)播放端已淘汰(Flash 已死)
延迟低需要专用流媒体服务器(Nginx-RTMP/SRS)
协议成熟稳定非 HTTP,CDN 成本高
防火墙/代理可能拦截

一句话:只用来推流,不用来播放。主播 OBS 推 RTMP → 服务器转 HLS/FLV 给观众。

5. WebRTC — 超低延迟实时通信

优点缺点
延迟 <1s,接近实时架构最复杂(ICE/STUN/TURN/SDP)
浏览器原生支持,无需插件大规模分发困难(P2P 不适合万人直播)
支持双向音视频服务器成本高(需 SFU/MCU)
适合互动场景画质/码率不如流媒体协议

一句话:视频通话/连麦/互动直播用它,纯观看不要用。

四、选型决策表

你的场景推荐协议理由
后台视频预览/点播MP4 直链最简单,零成本
视频网站/长视频点播HLS兼容性最好,CDN 便宜
追求极致画质 + 版权保护DASH自适应码率 + DRM
国内直播(秀场/游戏)HTTP-FLV低延迟 + CDN 友好
海外直播/通用直播HLS 低延迟模式LL-HLS 延迟可降至 2-5s
视频通话/连麦WebRTC唯一能做到 <1s 延迟的方案
主播推流RTMPOBS 等工具只认 RTMP

五、关注协议的核心原因总结

关注点为什么重要
用户体验延迟高 = 直播互动差;无自适应 = 弱网卡顿
成本RTMP 需专用服务器,WebRTC 需 TURN,HLS/DASH 用普通 CDN 最省钱
兼容性选错协议 = iOS 用户看不了/需要额外 polyfill
开发难度WebRTC 开发周期是 HLS 的 5-10 倍
业务场景通话必须 WebRTC,点播用 HLS,没有万能方案
清晰度DASH 的 ABR 能保证最优画质,FLV 做不到动态切换