我使用AVAssetImageGenerator
获取AVPlayerDemo
上的缩略图,对于HLS流,它在iOS8和iOS9上运行正常,但在iOS10上失败。 HLS流是具有" I-Frame仅播放列表"的流,例如流“https://tungsten.aaplimg.com/VOD/bipbop_adv_example_v2/master.m3u8”。没有" I-Frame仅播放列表的其他流"超出讨论范围。
从Apple官方指南中我们没有提到AVAssetImageGenerator
不支持HLS,但它只提到requestThumbnailImagesAtTimes(for MPMoviePlayer)
不支持HLS流。现在它在iOS8上工作正常,但在iOS10上失败,它让我感到困惑和不舒服,因为我们想要向我们的客户提供此功能,但它在iOS10上被阻止。
我在互联网和stackOver上搜索了很多,然后我知道对于AVAssetImageGenerator
,它不支持HLS流(HLS-VOD和HLS-Live)。我猜的原因如下:
(1)根据我的观察,HLS流没有asset.tracks(它是缩略图生成的前提条件),它只有currentItem.tracks。
(2)从第(1)点开始,我猜是因为"资产"是AVAssetImageGenerator初始化函数([[AVAssetImageGenerator alloc] initWithAsset:myAsset])
的输入参数,对于HLS流,asset.tracks为空,因此AVAssetImageGenerator无法为HLS流生成任何缩略图。虽然currentItem.tracks存在,但他们没有'在这种情况下工作。
但我的问题是,如果AVPlayer不支持生成"资产图像"对于HLS流,为什么它在iOS8和iOS9上工作正常,然后为什么在iOS10上失败?有没有人对我有同样的经历,你的理解如何?或者iOS10上有没有成功?
而且我不喜欢使用copyPixelBufferForItemTime
(我遇到了很多关于它的答案^ _ ^),因为我希望当用户滑动滑块以预览缩略图时,播放应该是继续不停顿或寻求。
你能帮忙点一下吗?