早上好,我正在测试 HLS 流媒体,并使用命令创建了一个简单的播放列表和视频片段ffmpeg -i C:\Users\funny\Desktop\uscita\out.mp4 -vcodec libx264 -g 24 -hls_time 10 -hls_playlist_type vod -vsync 1 index1.m3u8
。
源视频打开没有问题,ffmpeg 将其编码到 index1 中也没有问题,即播放列表文件,index10 index11 index12 是 3 个 .ts(视频只有 26 秒长)。我安装了 VLC,因为我知道它可以打开播放列表文件,所以我可以测试我的 .m3u8,但是当我用 VLC 打开它时,程序开始运行,但它不播放任何内容。作为参考,这里也是播放列表:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:11.500000,
index10.ts
#EXTINF:12.000000,
index11.ts
#EXTINF:2.500000,
index12.ts
#EXT-X-ENDLIST
答案1
总结:这看起来像是 VLC 的一个错误。请使用其他播放器。
我可以用问题中提到的一组 HLS 视频文件重现这个问题ffmpeg
。即使用 ffmpeg 4.0.2 和 VLC 3.0.4
症状:
使用 VLC打开.m3u8
文件时,我收到错误消息:
自适应解复用错误:无法创建解复用器 (nil) TLS
调试日志表明 VLC 实际上成功读取了播放列表并找到了 TS 文件,但随后出现了问题。
ffplay
但是,我可以使用和成功播放文件播放器,因此看起来错误出在 VLC 上。
VLC 错误跟踪器中有一些类似的错误报告,但大多数都相当老旧,据说已经修复。我确实设法通过打开文件的 URL 通过 HTTP 播放 HLS 流.m3u8
,因此该错误似乎仅适用于下载的 HLS 流。也许播放本地下载的.m3u8
文件对 VLC 来说不是高优先级,所以只需使用其他播放器即可。
答案2
VLC 似乎无法处理包含这些“EXT-X”指令的 m3u8 文件。据推测这是 VLC 的一个错误(如其他地方所述),至今仍未解决。
您的最佳选择是:
- 编辑
.m3u8
文件并删除 EXT-X 行(但保留那些 EXTINF 行)。然后,您应该能够使用 VLC 播放播放列表,或者 - 使用不同的应用程序
.m3u8
按原样播放文件。ffplay
例如,是一个可以播放该文件的应用程序。
答案3
以防万一有人仍然需要一些相关信息。
检查 mpegts 块的“content-type”标头。它应该是“video/mp2t”。