从视频网址创建缩略图图像!

问题描述:

我尝试从视频网址创建缩略图图像。 我使用AV Foundation编程指南。 我的项目有一个按钮和一个imageview。按下按钮后,缩略图图像将在uiimageview上加载。 我的代码不能正常工作,它是:从视频网址创建缩略图图像!

- (IBAction) btnClick : (id)sender 
{ 

    NSURL *url = [NSURL URLWithString:@"http://www.youtube.com/watch?v=bgN62D70VLk"]; 

    AVURLAsset *myAsset = [[AVURLAsset alloc] initWithURL:url options:nil]; 

    AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:myAsset]; 

    Float64 durationSeconds = CMTimeGetSeconds([myAsset duration]); 

    CMTime midpoint = CMTimeMakeWithSeconds(durationSeconds/2.0, 600); 

    NSError *error = nil; 

    CMTime actualTime; 

    CGImageRef halfWayImage = [imageGenerator copyCGImageAtTime:midpoint actualTime:&actualTime error:&error]; 

    if (halfWayImage != NULL) { 

     NSString *actualTimeString = (NSString *)CMTimeCopyDescription(NULL, actualTime); 

     NSString *requestedTimeString = (NSString *)CMTimeCopyDescription(NULL, midpoint); 

     NSLog(@"got halfWayImage: Asked for %@, got %@", requestedTimeString, actualTimeString); 

     [actualTimeString release]; 

     [requestedTimeString release]; 

     // Do something interesting with the image. 

     CGImageRelease(halfWayImage); 

    } 

    UIImage *image = [UIImage imageWithCGImage:halfWayImage]; 
    [imageView setImage:image]; 
    [imageGenerator release]; 

} 

帮助我这个问题,拜托了! 谢谢!

MPMoviePlayerController有一些方法来处理这个问题 -

thumbnailImageAtTime:timeOption: 

requestThumbnailImagesAtTimes: timeOption: 

cancelAllThumbnailImageRequests: 

我看到你的代码的一些问题:

  • http://www.youtube.com/watch?v=bgN62D70VLk是一个网页的URL,但AVAssets必须是视频或音频文件。注意:YouTube不会公布其视频文件的网址。
  • 您对[myAsset持续时间]的呼叫将被阻止。您应该改用AVAsynchronousKeyValueLoading协议(请参阅loadValuesAsynchronouslyForKeys)。
  • 您在释放它之后正在使用halfwayImage。

我会推荐观看WWDC 2010的AVFoundation会议,并查看会话示例代码。

这是很晚了,但它会帮助其他谁来谈这个问题。

调查this回答同样的问题,希望能对其他人有所帮助。