M3U8 404(未找到)错误:原因与修复方法
6 min read
404 错误对 M3U8 意味着什么
404(未找到)错误表示服务器找不到播放器请求的文件。在 HLS 里这很常见,因为一个流由许多文件组成——播放列表、片段,有时还有密钥——只要其中任何一个缺失或地址错误,就会 404。诀窍是弄清是哪个文件 404 了,因为修复方法取决于此。
M3U8 404 错误的常见原因
| 404 的对象 | 原因 |
|---|---|
| 主 .m3u8 | URL 错误或过期 |
| 媒体播放列表 | 引用的某个变体缺失 |
| .ts / .m4s 片段 | 过期(直播)或被服务器删除 |
| 密钥文件 | 加密密钥未发布 |
相对路径 vs 绝对路径问题
一个常见原因是相对路径。M3U8 播放列表常以相对名列出片段(如 segment1.ts),播放器会相对于播放列表的 URL 解析它们。如果你从错误的基础位置加载播放列表——或把它复制到别处——这些相对路径就指向不存在的文件,产生 404。确保从原始 URL 播放播放列表,让片段路径正确解析。
直播片段过期
对直播流,片段的寿命本就很短。播放列表是最近片段的滑动窗口;一旦某片段滚出窗口,服务器就删除它。如果播放器落后并请求旧片段,就会 404——这对直播 HLS 是正常的。保持在直播边缘附近可避免它。
如何诊断 404
- 在新标签页直接打开 M3U8 URL。这里 404 表示播放列表本身没了或 URL 错了。
- 如果播放列表能加载,从中复制一个片段 URL 直接打开——404 表示片段缺失。
- 检查 Network 标签,看到底哪个请求返回了 404。
- 检查路径——它们是相对的吗?你是从正确的基础 URL 播放吗?
如何修复
你修不了服务器时的对外话术
常见问题解答
为什么 M3U8 片段会 404?
它们已过期(直播)或被删除,或相对路径从你的位置无法解析。
直播流出现 404 正常吗?
正常——旧片段离开播放列表窗口后就被删除。
怎么知道是播放列表还是片段的问题?
分别直接打开各个 URL,看哪个返回 404。
能恢复一个 404 的流吗?
只能通过获取有效的、当前的 URL——缺失的文件无法播放。