VLC 和 m3u8 文件

VLC 和 m3u8 文件

早上好,我創建了“我正在測試 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 可以毫無問題地將其編碼到索引1(即播放清單檔案)中,索引10、索引11、索引12 是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

tl;dr:這看起來像是 VLC 的一個錯誤。使用不同的播放器。

ffmpeg我可以使用問題中所示創建的一組 HLS 視訊檔案來重現此問題。這是使用 ffmpeg 4.0.2 和 VLC 3.0.4

症狀:

使用 VLC開啟.m3u8文件,我收到錯誤訊息:

自適應解復用器錯誤:無法建立解復用器(nil)TLS

偵錯日誌顯示VLC實際上成功讀取了播放列表,並找到了TS文件,但隨後出現了問題。

ffplay但是,我可以使用和成功播放文件播放器,所以看來故障出在 VLC 上。

VLC bugtracker 有一些類似的錯誤報告,但大多數都相當舊且據說已修復。我確實透過開啟檔案的 URL 設法透過 HTTP 播放 HLS 串流.m3u8,因此該錯誤似乎僅適用於下載的 HLS 串流。也許播放本地下載的.m3u8檔案對 VLC 來說不是一個高優先級,所以只需使用不同的播放器。

答案2

VLC 似乎無法處理包含「EXT-X」指令的 m3u8 檔案。據推測,這是一個 VLC 錯誤(如其他地方所述),至今尚未解決。

您最好的選擇是:

  1. 編輯.m3u8檔案並刪除 EXT-X 行(但保留那些 EXTINF 行)。然後您應該能夠使用 VLC 播放播放列表,或者
  2. 使用不同的應用程式.m3u8按原樣播放檔案。ffplay例如,是一個會播放它的人。

答案3

以防萬一有人仍然需要一些資訊。

檢查 mpegts 區塊的「內容類型」標頭。它應該是“視頻/mp2t”。

相關內容