【问题标题】:Not Able to Generate Thumbnail Image from the Recorded Video无法从录制的视频中生成缩略图
【发布时间】:2013-06-27 11:35:41
【问题描述】:

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

【问题讨论】:

    标签: iphone uiimage video-thumbnails


    【解决方案1】:

    试试这个代码:

    UIGraphicsBeginImageContext(CGSizeMake(1,1));
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:assetURL];
    UIGraphicsEndImageContext();         
    UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
    
    [player stop];
    

    【讨论】:

    • 你刚刚粘贴了类似的代码m使用,尝试添加stop方法仍然没有成功...!!!!!!
    • 你得到正确的 URL 了吗?请 NSLog 你的 URL。
    • 我可以正确获取 URL 并仔细检查了每一件事,你有没有阅读日志为execution of first wayfinishes。
    • 试试这个:UIGraphicsBeginImageContext(CGSizeMake(1,1)); MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:assetURL]; UIImage *thumbnail = [播放器 thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; //播放器在初始化时自动播放音频[播放器停止]; UIGraphicsEndImageContext();
    • 老兄,我错误地使用了urlWithString 而不是fileURLWithPath,因为我改变了那个方法,一切正常,谢谢你回复我...... +1 相同
    【解决方案2】:

    终于找到方法了,其实是我错误地放置了错误的方法来创建那个录制的视频的 URL

    我使用urlWithString 而不是fileURLWithPath,因为我使用fileURLWithPath 一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-16
      • 2019-05-06
      • 1970-01-01
      • 2013-10-22
      • 2017-03-01
      • 2012-09-01
      • 2011-07-04
      • 2011-02-19
      相关资源
      最近更新 更多