我正在尝试为tvOS中的视频播放器应用构建自定义进度栏,并希望在用户扫描视频时显示视频的缩略图。
我正在使用AVPlayer
和Fairplay HLS播放远程视频文件。我尝试使用2种方法来执行此操作。一个使用AVAssetImageGenerator
的{{1}},另一个使用copyCGImage
的{{1}}方法。两者都返回nil。
当我尝试本地视频文件时,第一种方法有效。
方法1:
AVPlayerItemVideoOutput
方法2:
copyPixelBuffer
有什么主意我在做什么错或者还有其他方法吗?
谢谢!
答案 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的暂停实例用作缩略图。并且,当用户左右滑动时,您应该在缩略图中寻找播放器以显示右图框。