Создать миниатюру изображения из видео URL! - PullRequest
0 голосов
/ 29 января 2011

Я пытаюсь создать миниатюру изображения из видео URL.Я использую AV Foundation Programming Guide.В моем проекте есть кнопка и изображение.Когда кнопка нажата, миниатюрное изображение будет загружено в 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 голосов
/ 23 февраля 2011

Я вижу несколько проблем в вашем коде:

  • http://www.youtube.com/watch?v=bgN62D70VLk - это URL-адрес веб-страницы, но AVAssets должен быть видео или аудио файлами.Примечание. YouTube не публикует URL-адреса своих видеофайлов.
  • Ваш звонок на [myAsset duration] будет заблокирован.Вместо этого вы должны использовать протокол AVAsynchronousKeyValueLoading (см. LoadValuesAsynchronouslyForKeys).
  • Вы используете halfwayImage после его выпуска.

Я бы порекомендовал посмотреть сеансы AVFoundation из WWDC 2010 и посмотреть например кода сеанса.

0 голосов
/ 11 октября 2013

Это очень поздно, но это поможет другим, кто придет к этому вопросу.

Посмотрите на этот ответ на ту же проблему, Хоуп поможет другим парням.

0 голосов
/ 29 января 2011

MPMoviePlayerController имеет какой-то способ справиться с этим -

thumbnailImageAtTime:timeOption:

requestThumbnailImagesAtTimes: timeOption:

cancelAllThumbnailImageRequests:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...