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',
});

FLV 播放 图 1:HTTP-FLV 流在浏览器播放——控制条显示直播态

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 全景水印防录、多音轨全部可用。

相关文章