我想在我的ipad应用上截取视频截图。
我搜索了SO,我找到了很多示例代码。我尝试了一切,但似乎没有任何工作。
我尝试了所有这些方法:
- (void) previewWithPlayer:(NSString*)path image:(UIImageView*)imView
{
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:path]];
UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
[player stop];
[player release];
imView.image = thumbnail;
}
- (void) generateImage:(NSString*)path image:(UIImageView*)imView
{
AVAsset *asset = [AVAsset assetWithURL:[NSURL URLWithString:path]];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
CMTime time = CMTimeMake(1, 1);
UIImage *thumbnail = [UIImage imageWithCGImage:[imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL]];
imView.image = thumbnail;
}
- (void) generateImage:(NSString*)path image:(UIImageView*)imView
{
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL URLWithString:path] options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform=TRUE;
[asset release];
CMTime thumbTime = CMTimeMakeWithSeconds(2,30);
AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
if (result != AVAssetImageGeneratorSucceeded) {
NSLog(@"couldn't generate thumbnail, error:%@", error);
}
UIImage *thumbImg = [[UIImage imageWithCGImage:im] retain];
imView.image = thumbImg;
[generator release];
};
CGSize maxSize = CGSizeMake(320, 180);
generator.maximumSize = maxSize;
[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];
}
但 nothig 有效 我尝试使用MOV,MP4,没有。
路径正确,视频正在运行。
NSString *fPath = [[NSBundle mainBundle] pathForResource:@"VideoA" ofType:@"mp4"];
NSLog(@"%@", fPath);
[self generateImage:fPath image:_ImgA];
可能是什么问题?我的图像视图没有显示任何内容,也没有返回任何错误 iOS是6.0 / 5.1,在iPad模拟器/设备上。
视频为854×480像素,H.264,AAC。大约30Mb的大小。
请帮助我,因为我对这个问题感到很疯狂。
感谢。
返回此错误:
无法生成缩略图,错误:错误域= NSURLErrorDomain Code = -1“unknown error”UserInfo = 0x1e0a2f30 {NSUnderlyingError = 0x1e0a3900“操作无法完成。 (OSStatus错误-12935。)“,NSLocalizedDescription =未知错误}
答案 0 :(得分:6)
解决。
诀窍:使用fileURLWithPath:
,而不是URLWithString:
。显然,差异确实很重要。