M3U8 幾秒鐘後掛起

M3U8 幾秒鐘後掛起

下面我有一個小實驗片段:

http://d3fnzeq4kk32oq.cloudfront.net/802/test_1.m3u8

我面臨的問題是幾秒鐘後,影片掛起。

如果有人能夠幫助我,我將不勝感激

  1. 確定問題
  2. 任何修復
  3. 任何用於檢測或修復它的工具

答案1

我沒問題。這個 m3u8 指向的是直播的最後幾秒。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:54675
#EXTINF:10.0,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0122_54675.ts
#EXTINF:2.188,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0123_54676.ts
#EXTINF:10.0,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0123_54677.ts
#EXT-X-ENDLIST

HLS 將影片分割成多個片段。播放清單從段號 54675 開始,到 54677 結束#EXT-X-ENDLIST

當此串流直播時,m3u8 將會更新。

https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-12

答案2

.m3u8文件不是錄影片段;它是一個清單類型HTTP 視訊串流中使用的檔案。它指定編碼影片片段的 URL MPEG2-TS,長度通常約為 10 分鐘。

  1. 伺服器將此.m3u8文件傳送給客戶端
  2. 然後客戶端提取影片片段的URL .ts,然後顯示影片片段。

在正常的直播條件下,.m3u8伺服器每 10 分鐘就會向客戶端發送一個新文件,因此用戶端會知道下一個 10 分鐘視訊片段的 URL。當沒有更多片段或直播串流事件終止時,伺服器會發送一個帶有指令.m3u8的文件#EXT-X-ENDLIST,該文件告訴客戶端將不再有片段,如 szatmary 上面所解釋的。

因此,正如您所描述的,您的影片“掛起”,因為沒有更多可用片段。

修理:

無需修復,因為伺服器未提供更多段。

資源:

檢測這一點的最佳工具是像這樣的編輯器(vim) 這將使您看到.m3u8文件中的指令,以便您可以檢查該#EXT-X-ENDLIST指令。或僅使用cattail來顯示文件的內容.m3u8

szatmary 提供的 HTTP Live Streaming 的 IETF 草稿的連結內容非常豐富,並解釋了文件中使用的所有指令.m3u8

由於 Apple 開發並定義了該協議,因此這是最好的資訊來源: https://developer.apple.com/streaming/

其他資源可以在這裡找到: http://en.wikipedia.org/wiki/HTTP_Live_Streaming

相關內容