M3U8 播放失败排障:从链接到编码的定位流程
排障建议按照固定顺序做:先看链接可访问性,再看跨域和鉴权,最后看编码兼容。顺序错了会浪费大量时间。
步骤 1:确认链接有效
- 直接在浏览器打开 m3u8,至少能返回文本内容。
- 检查分片 URL 是否可访问,避免 m3u8 可用但 ts 全部 403。
- 签名参数有时效,过期后需要重新生成 URL。
步骤 2:检查 CORS
- 浏览器开发者工具看 Network/Console,是否存在 CORS 报错。
- 服务端至少要允许来源和必要请求头,分片与清单都要放行。
步骤 3:区分“解码失败”与“网络失败”
- 有声音没画面:常见是编码兼容问题(例如 HEVC)。
- 频繁缓冲:优先怀疑网络波动和分片体积过大。
- 开头能播后面中断:直播源更新异常或 token 过期。
步骤 4:需要转码时怎么做
- 优先转到 H.264 + AAC,兼容性最高。
- 先用低分辨率快速验证,再做高质量导出。
- 生产环境建议做任务队列,避免多个 ffmpeg 并发打满 CPU。