下面我有一個小實驗片段:
http://d3fnzeq4kk32oq.cloudfront.net/802/test_1.m3u8
我面臨的問題是幾秒鐘後,影片掛起。
如果有人能夠幫助我,我將不勝感激
- 確定問題
- 任何修復
- 任何用於檢測或修復它的工具
答案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 分鐘。
- 伺服器將此
.m3u8
文件傳送給客戶端 - 然後客戶端提取影片片段的URL
.ts
,然後顯示影片片段。
在正常的直播條件下,.m3u8
伺服器每 10 分鐘就會向客戶端發送一個新文件,因此用戶端會知道下一個 10 分鐘視訊片段的 URL。當沒有更多片段或直播串流事件終止時,伺服器會發送一個帶有指令.m3u8
的文件#EXT-X-ENDLIST
,該文件告訴客戶端將不再有片段,如 szatmary 上面所解釋的。
因此,正如您所描述的,您的影片“掛起”,因為沒有更多可用片段。
修理:
無需修復,因為伺服器未提供更多段。
資源:
檢測這一點的最佳工具是像這樣的編輯器六(vim) 這將使您看到.m3u8
文件中的指令,以便您可以檢查該#EXT-X-ENDLIST
指令。或僅使用cat
或tail
來顯示文件的內容.m3u8
。
szatmary 提供的 HTTP Live Streaming 的 IETF 草稿的連結內容非常豐富,並解釋了文件中使用的所有指令.m3u8
。
由於 Apple 開發並定義了該協議,因此這是最好的資訊來源: https://developer.apple.com/streaming/
其他資源可以在這裡找到: http://en.wikipedia.org/wiki/HTTP_Live_Streaming