HTTP-FLV 与 MPEG-TS 直播流播放:低延迟老将指南
打开国内直播平台的开发者工具,你大概率看到的是
.flv请求;安防与广电设备吐出来的,多半是 MPEG-TS。这两个「老格式」在低延迟直播生态里活得很好——浏览器不原生支持,但靠 MSE 解复用方案(flv.js/mpegts.js 一脉)稳定服役多年。ZWPlayer 把双引擎内置进播放器,.flv/.ts地址粘上就播。
格式背景:为什么直播圈离不开它们
- FLV:Adobe Flash 时代的容器,结构简单、头部小、流式友好。Flash 死了,但 HTTP-FLV(FLV 容器 + HTTP 分块传输)成为国内直播拉流事实标准——2~5 秒延迟,比 HLS 低一个量级,实现又比 WebRTC 简单得多;
- MPEG-TS:广电级传输流,抗丢包、适合长时间不间断传输。安防摄像头(RTSP 网关转流)、卫星信号、录像文件的常见输出。
两者的共同点:浏览器 <video> 不认,必须经 JavaScript 解复用成 MSE(Media Source Extensions)喂给浏览器。ZWPlayer 内置这条管线。
播放:零配置直接播
// HTTP-FLV 直播流
new ZWPlayer({
playerElm: 'player',
url: 'https://live.example.com/live/stream01.flv',
isLive: true, // 直播态:控制条显示 Live 标识、启用追帧
});
// TS 直播流 / TS 文件
new ZWPlayer({
playerElm: 'player',
url: 'https://example.com/live/program.ts',
});
图 1:HTTP-FLV 流在浏览器播放——控制条显示直播态
图 2:FLV 容器的点播内容同样直接播放
识别规则:URL 以 .flv 结尾走 FLV/mpegts 引擎,.ts 走 MPEG-TS 引擎,无需声明流类型。
双引擎:mpegts.js 与 flv.js
ZWPlayer 内置两代引擎:
- mpegts.js(flv.js 的继任者,B 站社区维护):默认引擎,支持 FLV 与 TS,支持 H.265/HEVC(配合支持 HEVC 的浏览器);
- flv.js(经典引擎):兼容存量场景,需要时
useOldFlv: true切回。
引擎对观众不可见——地址粘进来,该用哪个引擎播放器自己判断。
H.265 FLV:监控场景的刚需
安防摄像头近年大量输出 H.265(同画质码率省一半)。传统 FLV 直播方案卡在浏览器 H.265 支持,现在的路径是:Safari 原生支持、Edge/Chrome 依赖硬解(近年设备普遍可以)——h265_aac 组合的 FLV/TS 流在 ZWPlayer 里按浏览器能力自动选择直解或提示。配合 RTSP 网关的 rtsp_bypass: true,H.265 摄像头可以零转码直达浏览器。
延迟与选型:三种直播协议怎么配
| HTTP-FLV/TS | HLS | WebRTC | |
|---|---|---|---|
| 典型延迟 | 2~5 秒 | 5~30 秒 | 亚秒 |
| 实现/运维成本 | 低 | 极低(纯静态+CDN) | 高 |
| 大规模分发 | 一般(需 CDN 特性支持) | 极好 | 成本高 |
| 适合 | 中低延迟直播、监控 | 大流量点播+慢直播 | 连麦、拍卖级实时 |
常见组合拳:FLV 主流(低延迟)+ HLS 降级流(兜底与 CDN 扩容),关键场次再叠 WebRTC。
常见问题
FLV 直播播放几分钟断流? 检查服务端 GOP 缓存与 HTTP 分块超时设置;FLV 长连接经部分 CDN/反代需要显式关闭缓冲(X-Accel-Buffering: no 一类)。
TS 文件能拖进度条吗? 点播 TS(完整文件)可以;直播 TS 是流式的,只能追最新。
FLV 能进 VR/加水印吗? 能。FLV/TS 与 HLS/MP4 在播放器能力层同权——VR 全景、水印防录、多音轨全部可用。