gpt4 book ai didi

ios - HLS 冗余流和不良网络导致 AVPlayer 行为奇怪

转载 作者:行者123 更新时间:2023-11-29 05:38:21 30 4
gpt4 key购买 nike

我有一个可以播放视频 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 秒内加载并且播放时不会出现卡顿。

看起来 AVPlayer 试图与主视频加载并行处理所有冗余链接,并且严重阻塞。

有没有什么方法可以限制 AVPlayer 的这种行为,并强制他仅在实际加载错误的情况下才使用冗余流?知道为什么它会尝试加载所有这些吗?也许一些 HLS 标签可以提供帮助?

有时它还会在控制台中显示如下错误:

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

我找不到太多相关信息

最佳答案

问题在于 BANDWIDTH 值设置不正确,AVPlayer 有一些模糊的逻辑,如果当前属性与 m3u8 值不匹配,则会切换冗余流

关于ios - HLS 冗余流和不良网络导致 AVPlayer 行为奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56805926/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com