获取图像的问题使用generateCGImagesAsynchronouslyForTimes

时间:2011-08-12 05:38:34

标签: objective-c ios

我想从电影中获取一些图像并制作一个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}

正如你所看到的,时间全部四舍五入为整数,是否可以获得电影的第二张图像?

抱歉我的英语不好! 希望有人能帮助我,谢谢!

1 个答案:

答案 0 :(得分:4)

AVAssetImageGenerator Class Reference中找到答案:

  

requestedTimeToleranceBeforerequestedTimeToleranceAfter的值设置为kCMTimeZero,以请求帧精确图像生成;这可能会导致额外的解码延迟。

这是我正在使用的代码:

imageGenerator.requestedTimeToleranceAfter = kCMTimeZero;
imageGenerator.requestedTimeToleranceBefore = kCMTimeZero;