无法从录制的视频生成缩略图图像

时间:2013-06-27 11:35:42

标签: iphone uiimage video-thumbnails

我正在从录制的视频中生成缩略图,该缩略图存储在文档目录中,视频不能超过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什么都没有......仍然在寻找相同的东西。

2 个答案:

答案 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一切正常。