我正在开发一个使用 HTTP Live Streaming 技术播放视频的应用程序 为此,我使用 AVPlayer ,其初始化如下:
[[AVPlayer alloc] initWithURL:[NSURL URLWithString:VIDEO_URL]];
然后我使用self.player.currentItem.loadedTimeRanges
检查缓冲区的状态,并在我的自定义视图中显示此范围。
问题是当在由[self.player seekToTime:timeToSeek
toleranceBefore:kCMTimeZero
toleranceAfter:kCMTimeZero];
加载的区域中倒带时,加载视频就像它不在缓冲区中一样。
答案 0 :(得分:3)
首先,我的回答是假设您使用HTTP Live Streaming作为静态m3u8列表,否则在视频中搜索将没有多大意义。
HTTP Live Streaming使用嵌入子播放列表的m3u样式播放列表。 每个子播放列表显示不同的视频质量,AVPlayer根据网络速度选择使用哪一个。
但是,根据Apple's documentation,当玩家最初开始播放时,首先选择第一个子播放列表,并且只有在播放了几个ts文件后,才会选择相应的子播放列表,如上所述。
所以可能是当你寻找某个时间时,玩家首先尝试播放第一个没有缓存的子列表。
尝试以下方法:
CMTimeMake(30, 60)
答案 1 :(得分:1)
尝试使用iOS开发人员库中提供的示例代码StitchedStreamPlayer作为答案。