
早上好,我創建了“我正在測試 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 錯誤(如其他地方所述),至今尚未解決。
您最好的選擇是:
- 編輯
.m3u8
檔案並刪除 EXT-X 行(但保留那些 EXTINF 行)。然後您應該能夠使用 VLC 播放播放列表,或者 - 使用不同的應用程式
.m3u8
按原樣播放檔案。ffplay
例如,是一個會播放它的人。
答案3
以防萬一有人仍然需要一些資訊。
檢查 mpegts 區塊的「內容類型」標頭。它應該是“視頻/mp2t”。