我有一个需要拍摄视频,将每帧转换为图像并将这些图像保存到磁盘。我想使用AVAssetImageGenerator
效率的缘故,并有类似的代码如下:如何知道generateCGImages异步完成的时间?
的问题是,我不知道什么时候所有图像生成完成,但我需要采取行动,一旦所有帧写入磁盘。例如:
assetGenerator.generateCGImagesAsynchronously(forTimes: frameTimes, completionHandler: { (requestedTime, image, actualTime, result, error) in
// 1. Keep a reference to each image
// 2. Wait until all images are generated
// 3. Process images as a set
})
这是上面的第2步,让我绊倒。我想我可以尝试计算完成处理程序被调用的次数,并在计数等于帧数时触发适当的方法。
但我想知道是否有一种方法来使用API来知道每一帧的处理?也许只是我错过了什么?任何指导或建议,将不胜感激。
谢谢,这看起来像一个更好的解决方案。 – terrafirma9
很好的答案。有用。 – Leo