Ann*_*565 6 iphone objective-c ios avplayer
我必须从视频中提取缩略图(来自网址),我使用此代码:
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);
Run Code Online (Sandbox Code Playgroud)
但有时我在copyCGImageAtTime时出错,并且没有生成缩略图.错误是:Error save image Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed"(OSStatus error -12792.)", NSLocalizedFailureReason=An unknown error occurred (-12792)}
这是我已经阅读了解决方案的链接,但是如果使用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];
Run Code Online (Sandbox Code Playgroud)
但是,使用此代码,播放器将开始自动播放音频.所以,你必须使用以下代码停止播放器:
//Player autoplays audio on init
[player stop];
Run Code Online (Sandbox Code Playgroud)
更新:
错误保存图像错误Domain = AVFoundationErrorDomain Code = -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];
Run Code Online (Sandbox Code Playgroud)
在我的一个应用程序中,我从视频网址中捕获了一张图像,如下所示:
MPMoviePlayerController *player = [[[MPMoviePlayerController alloc] initWithContentURL:videoURL]autorelease];
UIImage *thumbnail = [player thumbnailImageAtTime:0.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
Run Code Online (Sandbox Code Playgroud)
只需将 url 对象作为 videoURL 传递,并使用 MPMoviePlayerController 我就能成功地始终获得图像。希望您也能够使用这个简单的代码来做到这一点
| 归档时间: |
|
| 查看次数: |
5727 次 |
| 最近记录: |