我正在从录制的视频中生成缩略图,该缩略图存储在文档目录中,视频不能超过1分钟。直到录制时间一切正常。我试图从录制的视频生成缩略图什么都没有。我已经使用了两种方式相同
使用MPMoviePlayerController
-(void)generateThumbnail:(NSURL*)assetURL{
if(assetURL){
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:assetURL];
UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
//AT THIS POINT AS I CHECK IT THIS thumbnail contains 0X000000
player = nil;
if (thumbnail) {
//will use that image to further
}
else {
//here wil doing some intimation
}
}
}
正如上面的方法完成执行获得这些日志
自动播放:启用自动播放 自动播放:可能跟上或完全缓冲:0 [MPAVController]自动播放:跳过自动播放,没有足够的缓冲来跟上。 [MPAVController]自动播放:启用自动播放 [MPAVController]自动播放:启用自动播放 [MPAVController]自动播放:跳过自动播放,禁用(对于当前项目:0,在播放器上:1) [MPAVController]自动播放:启用自动播放[MPAVController]自动播放:跳过自动播放,禁用(对于当前项目:0,在播放器上:1)
使用AVAssetImageGenerator
-(void)genrateThumbnailImageFromAsset:(AVAsset*)_assetObject size:(CGSize)size forTime:(CMTime)thumbTime
{
__weak typeof(self) wself = self;
__block UIImage * thumbNailImage = nil;
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:_assetObject];
generator.appliesPreferredTrackTransform=TRUE;
AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error)
{
switch (result) {
case AVAssetImageGeneratorSucceeded:{
/*get the generated image*/
thumbNailImage=[UIImage imageWithCGImage:im];
// We finished updating the image. Set the visual UI button to the uploaded image
if (thumbNailImage) {
//using accordingly
}
else
{
//using accordingly
}
}
break;
case AVAssetImageGeneratorFailed:{
//using accordingly
NSLog(@"%@",[error localizedDescription]);
}
break;
case AVAssetImageGeneratorCancelled:{
//using accordingly
NSLog(@"%@",[error localizedDescription]);
}
break;
default:
break;
}
};
generator.maximumSize = size;
[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];
}
By Above什么都没有......仍然在寻找相同的东西。
答案 0 :(得分:1)
试试这段代码:
UIGraphicsBeginImageContext(CGSizeMake(1,1));
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:assetURL];
UIGraphicsEndImageContext();
UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
[player stop];
答案 1 :(得分:0)
终于搞定了,实际上我错误地设置了错误的方法来创建录制视频的网址
我使用urlWithString
代替fileURLWithPath
,因为我使用fileURLWithPath
一切正常。