我整天都在翻阅SO答案、Apple参考文献、文档等,但是没有成功。
我想要的是一个简单的东西:我正在使用AVPlayer播放视频,希望能够暂停并获取当前帧作为UIImage
。就是这样。
我的视频是位于互联网上的m3u8文件,在AVPlayerLayer
中正常播放,没有任何问题。
我尝试了什么:
AVAssetImageGenerator
。 它不起作用,方法copyCGImageAtTime:actualTime:error:
返回空图像引用。根据此处的答案,AVAssetImageGenerator
对流媒体视频不起作用。- 拍摄播放器视图的快照。 我首先尝试了
AVPlayerLayer
上的renderInContext:
,但是我意识到它不会渲染这种“特殊”图层。然后我发现iOS 7中引入了一种新方法-drawViewHierarchyInRect:afterScreenUpdates:
,应该也能够渲染特殊图层,但是没有运气,仍然得到了带有视频显示的空黑色区域的UI快照。 AVPlayerItemVideoOutput
。我为我的AVPlayerItem
添加了一个视频输出,但是每当我调用hasNewPixelBufferForItemTime:
时,它都返回NO
。我想问题可能又出在流媒体视频上,与此处的问题相同。AVAssetReader
。我想尝试一下,但在找到相关问题这里后,决定不浪费时间。
那么难道没有任何方法可以获取我正在屏幕上看到的东西的快照吗?我简直无法相信。