在iOS设备上以编程方式限制HLS流的比特率



我有一个正在流到iOS应用的高清视频。我想允许用户能够限制最大流质量(低,中,高)的能力,因为视频以最大比特速率流式传输时是几个GB。出于明显的数据上限原因,我想自动选择基于蜂窝与WiFi连接的设置。

通过访问AVPlayerItemAccessLogEvent获得当前的比特率,我没有问题,但是在迫使质量较低的流方面丢失了。

HLS甚至可以吗?谢谢!

如果您使用的是Avplayer,则正确的方法应为

preferredPeakBitRate

从Apple Doc这里,此项目的网络带宽消耗的所需限制,每秒以每秒的位置。

这并不是完全动态的,但是我确实通过创建四个不同的M3U8播放列表来解决此问题。我标记了每个播放列表以表示流质量(低,中,高,极端)。用户将根据所需的最大质量选择一个。极端播放列表包括所有品质的URL。高播放列表的URL比Extreme的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

就像我说的那样,这不是动态的,但是您可以使用各种技术来获得用户网络连接,并在需要时指向所需的质量播放列表。对我来说,足以获得用户的喜好并相应地调整流。

相关内容

  • 没有找到相关文章

最新更新