簡體   English   中英

具有HLS冗余流和不良網絡的奇怪AVPlayer行為

[英]Strange AVPlayer behavior with HLS redundant streams and bad network

我有一個可以播放視頻HLS流的應用程序。 HLS主播放列表包含冗余流以提供備份服務

看起來像這樣:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1500000,RESOLUTION=638x480
https://example.com/playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=2
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=3

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8?redundant=1
....
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8?redundant=5

因此,我決定測試一下在網絡狀況不佳的情況下此設置的運行方式。 為此,我使用了網絡鏈接調節器的3G預設,它提供了750kbs的下載帶寬。 自然,我希望可以相對平穩地播放400kbs的視頻,但可惜的是,完全加載測試片段(總大小為800kb)需要60秒。

我注意到的是AVPlayer為所有列出的冗余播放列表發送了請求(每個帶寬有5個)。 如果我刪除它們,並且每個帶寬僅保留1個媒體播放列表-視頻將在10秒內加載並且播放時不會出現打ic現象。

看起來AVPlayer嘗試在處理主視頻負載的同時並行處理所有冗余鏈接,並且很難進行扼殺。

有什么方法可以限制AVPlayer的這種行為,並僅在實際負載錯誤的情況下才迫使他去使用冗余流? 知道為什么它嘗試加載所有這些嗎? 也許某些HLS標簽可以提供幫助?

有時它還會在控制台中顯示如下錯誤:

{OptimizedCabacDecoder::UpdateBitStreamPtr} bitstream parsing error!!!!!!!!!!!!!!

我找不到關於它的很多信息

問題出在錯誤地設置了BANDWIDTH值,如果屬性當前值與m3u8值不匹配,則AVPlayer的邏輯有些模糊,無法切換冗余流

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM