gpt4 book ai didi

ios - AVPlayer seekToTime : doesn't use buffer

转载 作者:可可西里 更新时间:2023-11-01 04:42:02 28 4
gpt4 key购买 nike

我正在开发一个使用HTTP Live Streaming 技术播放视频的应用程序。
为此,我使用 AVPlayer 初始化如下:

[[AVPlayer alloc] initWithURL:[NSURL URLWithString:VIDEO_URL]];

然后我使用 self.player.currentItem.loadedTimeRanges 检查缓冲区的状态,并在我的自定义 View 上显示这个范围。

问题是当在由 [self.player seekToTime:timeToSeek
toleranceBefore:kCMTimeZero
toleranceAfter:kCMTimeZero];
,加载视频开始就像它不在缓冲区中一样。

最佳答案

首先,我的回答假设您正在为静态 m3u8 列表使用 HTTP Live Streaming,否则在视频中搜索将没有多大意义。

可能的原因

HTTP Live Streaming 使用嵌入子播放列表的 m3u 风格播放列表。每个子播放列表显示不同的视频质量,AVPlayer 根据网络速度选择使用哪个。

但是,根据Apple's documentation ,当播放器最初开始播放时,它首先选择第一个子播放列表,只有在播放了几个 ts 文件后,它才会选择合适的子播放列表,如上所述。

因此可能是当您搜索到某个时间时,播放器首先尝试播放未缓存的第一个子列表。

建议的解决方案

尝试以下操作:

  1. 将 m3u8 流更改为只有一个子流。
  2. 使用 kCMTimeZero 以外的值作为公差,即 CMTimeMake(30, 60)
  3. 监控网络调用以查看播放器下载的具体内容以及下载时间,您可以使用 Charles proxy例如。

关于ios - AVPlayer seekToTime : doesn't use buffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16708696/

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