簡體   English   中英

在iOS設備上以編程方式限制HLS流的比特率

[英]Capping the bit rate of an HLS stream programmatically on iOS devices

我有一個高清視頻,我正在流媒體到iOS應用程序。 我想讓用戶能夠限制最大流質量(低,中,高),考慮到以最大比特率流式傳輸時視頻為幾GB。 同樣,我想根據明顯的數據上限原因自動選擇基於蜂窩與wifi連接的設置。

通過訪問AVPlayerItemAccessLogEvent獲取當前比特率沒有問題,但是在強制降低質量流時丟失了。

這對HLS來說甚至可能嗎? 謝謝!

它不是完全動態的,但我確實通過創建四個不同的m3u8播放列表來解決這個問題。 我將每個播放列表標記為代表流質量(低,中,高,極端)。 用戶將根據所需的最高質量選擇一個。 極端播放列表包含所有品質的URL。 高播放列表的URL少於極端,URL少於高,URL少於媒體。 每當用戶選擇不同的質量時,我只需將基本流播放列表切換到相應的質量播放列表URL。

以下是四個不同播放列表的簡單示例。

HLS_Movie_Extreme.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000
stream-0-64000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000
stream-1-350000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000
stream-2-800000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1200000
stream-3-1200000/index prog_index.m3u8 m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1800000
stream-4-1800000/prog_index.m3u8

HLS_Movie_High.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000
stream-0-64000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000
stream-1-350000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000
stream-2-800000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1200000
stream-3-1200000/index prog_index.m3u8 m3u8

HLS_Movie_Medium.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000
stream-0-64000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000
stream-1-350000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000
stream-2-800000/prog_index.m3u8

HLS_Movie_Low.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000
stream-0-64000/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000
stream-1-350000/prog_index.m3u8

就像我說的那樣,它不是動態的,但你可以使用各種技術來獲得用戶的網絡連接,並在需要時指向所需的質量播放列表。 對我來說,獲得用戶的偏好就足夠了,並相應地調整流。

如果您使用的是AVPlayer,那么正確的方法應該是

preferredPeakBitRate

此處的 Apple doc,此項目的網絡帶寬消耗的所需限制(以每秒位數為單位)。

暫無
暫無

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

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