无法使用Fairplay HLS从AVPlayer获取视频缩略图

时间:2019-02-10 14:48:47

标签: swift avfoundation tvos hls fairplay

我正在尝试为tvOS中的视频播放器应用构建自定义进度栏,并希望在用户扫描视频时显示视频的缩略图。

我正在使用AVPlayer和Fairplay HLS播放远程视频文件。我尝试使用2种方法来执行此操作。一个使用AVAssetImageGenerator的{​​{1}},另一个使用copyCGImage的{​​{1}}方法。两者都返回nil。

当我尝试本地视频文件时,第一种方法有效。

方法1:

AVPlayerItemVideoOutput

方法2:

copyPixelBuffer

有什么主意我在做什么错或者还有其他方法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

这通常是通过利用与您的实际流关联的特技播放流来完成的。

https://en.wikipedia.org/wiki/Trick_mode

您可以在HLS流的清单中找到用键EXT-X-I-FRAME-STREAM-INF声明的声明。可能需要使用正则表达式才能解析其值。

"#EXT-X-I-FRAME-STREAM-INF[^#]*URI=[^#]*"

一旦有了特技播放流的URL,就可以将AVPlayer的暂停实例用作缩略图。并且,当用户左右滑动时,您应该在缩略图中寻找播放器以显示右图框。