返回测试器
HLS

HLS / m3u8 浏览器播放与诊断

解释 HLS playlist、TS/fMP4 segment、Safari 原生 HLS 和 hls.js 播放诊断。

网页能否直连
可播放
链路位置
浏览器分发格式
浏览器结论
Safari 原生,其他浏览器通常用 hls.js

一句话结论

HLS/m3u8 是网页播放里最常用的兼容方案之一。它把视频拆成 playlist 和一段段小切片,浏览器或 hls.js 按顺序下载播放。

它在视频链路里的位置

HLS 通常是最终播放分发格式,不是摄像头原始协议。RTSP、RTMP、SRT 等源流可以由服务端转成 HLS。

一个 m3u8 只是目录,真正的视频在它引用的 TS 或 fMP4 segment 里。

在浏览器项目里怎么用

Safari 可以原生播放 HLS。Chrome、Edge、Firefox 通常用 hls.js 把切片喂给浏览器的媒体能力。

前端测试时不能只看 m3u8 能不能下载,还要看子 playlist 和 segment 是否能访问。

服务端需要做什么

服务端要输出 master playlist、media playlist、segment,并设置正确 MIME type 和 CORS。

如果用于直播,还要控制切片时长、列表窗口、缓存策略和延迟目标。

常见开发场景

  • 公网直播、点播、移动端播放、需要 CDN 分发的场景。
  • 适合优先追求兼容性,不适合极低延迟控制。

排查顺序

  • m3u8 能打开但不能播时,优先查 segment CORS、MIME type、404、鉴权和编码。
  • H.265 HLS 在 Safari/iOS 更友好,但不能假设所有 Chrome/Firefox 都能播。

推荐转换路径

  • RTSP/RTMP/SRT -> HLS 用于兼容播放。
  • 低延迟要求高时,评估 LL-HLS 或 WebRTC。

最小可用实现

  • 前端:Safari 走原生 video,其他浏览器优先 hls.js。
  • 后端:生成合法 m3u8 和 segment,保证 playlist 与 segment 都能跨域访问。

开发者判断标准

HLS 不能只按名字判断是否可播,要看它在链路中承担的是源站输入、网页播放输出、低延迟会话,还是网络辅助能力。当前浏览器结论:Safari 原生,其他浏览器通常用 hls.js。落地前需要确认真实源站、是否需要服务端转换、CORS/HTTPS 策略、编码支持和延迟目标。

相关协议