我想从电影中获取一些图像并制作一个gif。我所做的是使用imagePickerController拍摄电影,然后我使用AVAssetImageGenerator
- (void)generateCGImagesAsynchronouslyForTimes:(NSArray *)requestedTimes completionHandler:(AVAssetImageGeneratorCompletionHandler)handler;
生成图像。我确实得到了图像,但图像的时间并不是我想要的。
请求:{0/600 = 0.000,舍入},获取:{0/600 = 0.000}
请求:{110/600 = 0.183,舍入},获取:{0/600 = 0.000}
请求:{221/600 = 0.368,舍入},获取:{0/600 = 0.000}
请求:{331/600 = 0.552,已舍入},获取:{601/600 = 1.002}
请求:{442/600 = 0.737,已舍入},获取:{601/600 = 1.002}
请求:{552/600 = 0.920,舍入},获取:{601/600 = 1.002}
请求:{663/600 = 1.105,舍入},获取:{601/600 = 1.002}
请求:{773/600 = 1.288,舍入},获取:{601/600 = 1.002}
请求:{884/600 = 1.473,已舍入},获取:{601/600 = 1.002}
正如你所看到的,时间全部四舍五入为整数,是否可以获得电影的第二张图像?
抱歉我的英语不好! 希望有人能帮助我,谢谢!答案 0 :(得分:4)
在AVAssetImageGenerator Class Reference中找到答案:
将
requestedTimeToleranceBefore
和requestedTimeToleranceAfter
的值设置为kCMTimeZero
,以请求帧精确图像生成;这可能会导致额外的解码延迟。
这是我正在使用的代码:
imageGenerator.requestedTimeToleranceAfter = kCMTimeZero;
imageGenerator.requestedTimeToleranceBefore = kCMTimeZero;