我在使用(Grand Central Dispatch)在另一个线程中使用MPMoviePlayer时遇到了问题。我想通过网址吸引视频,剪切第5帧并返回图片。在模拟器工作正常,但在一个真正的设备 - 秋天。这里有什么问题?也许它只适用于主线程?从线程中的视频url中提取缩略图
NSURL* url = [NSURL URLWithString:filePath];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(void)
{
MPMoviePlayerController* moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.shouldAutoplay = NO;
UIImage* thumbnail = [moviePlayer thumbnailImageAtTime:5 timeOption:MPMovieTimeOptionNearestKeyFrame];
dispatch_async(dispatch_get_main_queue(), ^(void)
{
[[Singleton sharedSingleton].imageCache setValue:thumbnail forKey:filePath];
[cell.presentationViewOutlet setImage:thumbnail];;
});
});
现在,我尝试使用另一种方法,但它也适用于模拟器,并且在真实设备上不显示。有时会返回imageRef = (null)
,有时会返回imageRef = <CGImage 0x1766dd20>
。
编辑:
NSURL* url = [NSURL URLWithString:filePath];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(void)
{
AVAsset *asset = [AVAsset assetWithURL:videoURL];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
imageGenerator.appliesPreferredTrackTransform = TRUE;
CMTime time = CMTimeMakeWithSeconds(1, 1);
NSError *err = NULL;
CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:&err];
dispatch_async(dispatch_get_main_queue(), ^(void)
{
NSLog(@"imageRef = %@", imageRef);
UIImage* image = [UIImage imageWithCGImage:imageRef];
if (image != nil)
{
NSLog(@"image != nil");
[view setImage:image];
NSString* videoURLString = [videoURL absoluteString];
[[Singleton sharedSingleton].imageCache setValue:image forKey:videoURLString];
CGImageRelease(imageRef);
}
else
{
NSLog(@"err = %@", err);
}
});
});
错误:
如果imageRef =(空)表示ERR = Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x156c1a50 {NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x155b29a0 "The operation couldn’t be completed. (OSStatus error -12792.)", NSLocalizedFailureReason=An unknown error occurred (-12792)}
您是否找到解决此问题的解决方案?我现在也面临同样的问题:( –
@ VishnuKumar.S你找到了解决方案?面临同样的问题:(http://stackoverflow.com/questions/37374008/ios-swift-video-thumbnail-error – Sam