我必须从视频(来自网址)中提取缩略图,我使用以下代码:
NSString *stringUrl = video.stringurl;
NSURL *url = [NSURL URLWithString:stringUrl];
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
[imageGenerator setRequestedTimeToleranceBefore:kCMTimeZero];
[imageGenerator setRequestedTimeToleranceAfter:kCMTimeZero];
CGImageRef imageRef = [imageGenerator copyCGImageAtTime:playerCurrentTime actualTime:&actualtime error:&error];
UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
但有时我在 copyCGImageAtTime 时遇到错误,并且未生成缩略图。错误是:Error save image Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed"(OSStatus error -12792.)", NSLocalizedFailureReason=An unknown error occurred (-12792)}
这里是link我已经阅读了一个解决方案,但如果使用 fileURLWithPath: 而不是 URLWithString: 该方法会在 url 末尾添加一个“-- file://localhost/” ,这会使 url 无效。所以我不知道我能做什么。
如果您正在使用MPMoviePlayerController
然后您可以使用此代码从视频 URL 生成缩略图。
NSString *stringUrl = video.stringurl;
NSURL *url = [NSURL URLWithString:stringUrl];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];
UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
但是,使用此代码,播放器将开始自动播放音频。因此,您必须使用以下代码停止播放器:
//Player autoplays audio on init
[player stop];
Update :
保存图像时出错错误域=AVFoundationErrorDomain代码=-11800“
操作无法完成“(OSStatus错误-12792。)”,
NSLocalizedFailureReason=发生未知错误 (-12792)}
该错误可能是由于使用URLWithString
。我认为你应该使用-fileURLWithPath
代替URLWithString
.
示例代码:
NSString *stringUrl = video.stringurl;
NSURL *vidURL = [NSURL fileURLWithPath:stringUrl];
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:vidURL options:nil];
AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset];
NSError *err = NULL;
CMTime time = CMTimeMake(1, 60);
CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:NULL error:&err];
UIImage *thumbnail = [UIImage imageWithCGImage:imgRef];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)