M3U8/HLS 故障排除指南

https://example.com/video.m3u8 ⚠ CORS 错误 被浏览器阻止 添加 Access-Control https://example.com/video.m3u8 ✓ Playing CORS 头:正常 流:已连接 修复 CORS 响应头以启用流媒体播放

CORS 错误 - 最常见问题

在线播放M3U8流时最常见的错误是 CORS(跨域资源共享)错误。当视频服务器未包含允许跨域访问的HTTP响应头时就会发生。

如何确认: 打开浏览器开发者工具(F12)→ 控制台,查找如下信息:

Access to XMLHttpRequest has been blocked by CORS policy

按服务器类型的解决方案

Nginx

location /hls/ {
  add_header 'Access-Control-Allow-Origin' '*';
  add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
}

Apache (.htaccess)

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, OPTIONS"

CDN (Cloudflare/AWS)

在CDN设置面板中启用CORS。大多数CDN都有专门的CORS配置区域。将允许源设为 * 或您的播放器域名。

Node.js/Express

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  next();
});

持续缓冲 / 加载缓慢

源服务器带宽不足

视频源服务器可能带宽不足。尝试更低码率的流或联系服务器管理员。

CDN区域不匹配

如果您距离CDN边缘节点较远,延迟会增加。使用在您所在区域有节点的CDN。

分片过期或缺失

直播流可能快速过期分片。如果分片返回404,流可能已结束或DVR窗口已过期。

运营商限速

您的ISP可能对视频流量限速。使用VPN测试以排除ISP限速。

格式与兼容性问题

"格式不支持" 错误

确保URL指向有效的.m3u8播放列表。有些服务器返回HTML错误页面而非M3U8内容。先在新标签页打开URL检查。

音视频不同步

分片时间戳可能不对齐,这是源编码问题。尝试刷新播放器或向流提供商反馈。

DRM保护的流

本播放器支持AES-128加密但不支持Widevine/FairPlay DRM。DRM保护的流需要授权播放器。

字幕无法加载

确保字幕为WebVTT(.vtt)格式。SRT文件需要转换。字幕URL也必须启用CORS头。

相关文章

📚 关于 M3U8 与 HLS

深入了解M3U8播放列表和HLS流媒体的底层工作原理。涵盖自适应码率、主播放列表、.ts分片以及M3U8与MP4的技术深度对比。

📱 移动端播放指南

iPhone、iPad和Android上M3U8/HLS播放的分步说明。Safari、Chrome、Firefox等浏览器的特定技巧和PWA主屏幕安装指南。

❓ 常见问题解答

14个常见M3U8和HLS问题的快速解答,包括CORS修复、缓冲解决方案、格式支持、DRM加密和将播放器嵌入网站的方法。

💻 如何搭建HLS流媒体服务器

使用Nginx和RTMP模块搭建自己的HLS流媒体服务器。包含ffmpeg编码命令、直播配置和CDN集成的完整教程。