1

我正在尝试从特定时间码的视频中生成缩略图。我正在使用 AVPlayer,这是我写的方法:

-(UIImageView *) generateCommentThumbnail: (CMTime) now{

AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:videoAsset];
gen.appliesPreferredTrackTransform = YES;

NSError *error = nil;
CMTime actualTime;
[gen setRequestedTimeToleranceAfter:kCMTimeZero];
[gen setRequestedTimeToleranceBefore:kCMTimeZero];
CGImageRef image = [gen copyCGImageAtTime:now actualTime:&actualTime error:&error];


UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
UIImageView *iv = [[UIImageView alloc] initWithImage:thumb];

NSLog(@"%f , %f",CMTimeGetSeconds(now),CMTimeGetSeconds(actualTime));

NSLog(@"%@",error);
    return iv;

}

为了获得帧精确的图像,我使用了 setsetRequestedTimeToleranceBefore:kCMTimeZero 和 setRequestedTimeToleranceAfter:kCMTimeZero,但从那时起,大多数时候我都会收到此错误:

错误域=AVFoundationErrorDomain 代码=-11800 “操作无法完成”

虽然,有时它工作得很好。当我打印时,收到此错误时,“actualTime”我看到它是“inf”或“nan”或只是一个非常大的数字。

以前有人遇到过这个吗?

谢谢, 约拿单

4

1 回答 1

0

问题是您正在创建这么多实例,因此您需要解除分配

于 2016-05-18T15:43:21.143 回答