【发布时间】:2016-09-17 20:33:25
【问题描述】:
我花了一整天的时间浏览了很多 SO 答案、Apple 参考资料、文档等,但没有成功。
我想要一个简单的事情:我正在使用 AVPlayer 播放视频,我想暂停它并将当前帧作为UIImage。就是这样。
我的视频是网上的m3u8文件,在AVPlayerLayer可以正常播放,没有任何问题。
我尝试了什么:
-
AVAssetImageGenerator. 不起作用,copyCGImageAtTime:actualTime: error:方法返回空图像参考。根据答案hereAVAssetImageGenerator不适用于流媒体视频。 -
拍摄玩家视图的快照。我首先在
AVPlayerLayer上尝试了renderInContext:,但后来我意识到它并没有渲染这种“特殊”图层。然后我发现了 iOS 7 中引入的一种新方法 -drawViewHierarchyInRect:afterScreenUpdates:,它应该也可以渲染特殊图层,但没有运气,仍然得到了显示视频的带有空白黑色区域的 UI 快照。 -
AVPlayerItemVideoOutput. 我为AVPlayerItem添加了视频输出,但是每当我调用hasNewPixelBufferForItemTime:时,它都会返回NO。我猜这个问题又是流视频和I am not alone 有这个问题。 -
AVAssetReader.我本来想试试的,但在找到相关问题here后决定不耽误时间。
那么有没有什么方法可以获取我现在在屏幕上看到的东西的快照?我简直不敢相信。
【问题讨论】:
标签: ios objective-c video avfoundation avplayer