从视频网址创建缩略图!

时间:2011-01-29 04:09:28

标签: iphone ios avfoundation

我正尝试从视频网址创建缩略图。 我使用AV基础编程指南。 我的项目有一个按钮和一个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];

}

请帮我解决这个问题! 谢谢!

3 个答案:

答案 0 :(得分:0)

MPMoviePlayerController有一些方法可以解决这个问题 -

thumbnailImageAtTime:timeOption:

requestThumbnailImagesAtTimes: timeOption:

cancelAllThumbnailImageRequests:

答案 1 :(得分:0)

我在您的代码中看到了一些问题:

  • http://www.youtube.com/watch?v=bgN62D70VLk是网页的网址,但AVAssets必须是视频或音频文件。注意:YouTube不会宣传其视频文件的网址。
  • 您对[myAsset duration]的调用将被阻止。您应该使用AVAsynchronousKeyValueLoading协议(请参阅loadValuesAsynchronouslyForKeys)。
  • 发布后你正在使用halfwayImage。

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

答案 2 :(得分:0)

这已经很晚了,但它会帮助其他人来解决这个问题。

查看同一问题的this答案,希望对其他人有帮助。