Получение миниатюр видео на iPhone - PullRequest
3 голосов
/ 31 января 2010

Как получить миниатюру видео, импортированного из рулона камеры, или самой камеры?

Об этом уже спрашивали и отвечали. Однако ответы для меня отстой.

Эта тема iphone sdk> 3.0. Миниатюра видео? имеет несколько параметров, которые сводятся к:

  1. Просканируйте каталог файловой системы для JPG с последней датой изменения, которая должна соответствовать видео, которое вы только что выбрали. Это очень грязно и связано с рутированием в каталогах, которые Apple, вероятно, не очень хочет, чтобы я делал.
  2. Используйте ffmpeg. Но это настолько общее, что я не могу понять, какие шаги нужно предпринять, чтобы импортировать ffmpeg в мой проект и фактически вызвать его для извлечения изображений.

Неужели нет другого пути? Это кажется ОГРОМНЫМ упущением в SDK для меня. Я имею в виду, что в окне выбора видео есть эскизы, поэтому Apple, должно быть, делает что-то для их генерации, но не позволяет нам делать это?

Ответы [ 3 ]

12 голосов
/ 12 ноября 2010
     -(void)testGenerateThumbNailDataWithVideo {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"IMG_0106" ofType:@"MOV"];
 NSURL *url = [NSURL fileURLWithPath:path];
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
    AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    NSError *err = NULL;
    CMTime time = CMTimeMake(1, 60);
    CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:NULL error:&err];
    [generate release];
    NSLog(@"err==%@, imageRef==%@", err, imgRef);
    UIImage *currentImg = [[UIImage alloc] initWithCGImage:imgRef];
    static BOOL flag = YES;
    if (flag) { 
        NSData *tmpData =   UIImageJPEGRepresentation(currentImg, 0.8);
        NSString *path = [NSString stringWithFormat:@"%@thumbNail.png", NSTemporaryDirectory()];
        BOOL ret = [tmpData writeToFile:path atomically:YES]; 
        NSLog(@"write to path=%@, flag=%d", path, ret);
        flag = NO;
    }
    [currentImg release]; 
}
3 голосов
/ 25 августа 2010

Лучший метод, который я нашел ... MPMoviePlayerController thumbnailImageAtTime: timeOption

Не берите в голову это ... см. Первый комментарий ниже. Это ответ.

1 голос
/ 31 января 2010

Мы используем ffmpeg, вы можете изучить наш сайт для получения подсказок о том, как это сделать, в конце концов я хочу создать учебник.

Но сейчас я более сконцентрирован на том, чтобы заставить ffmpeg воспроизводить фильмы. Поймите, когда у вас есть этот код, код для создания миниатюры - это только часть этого. http://sol3.typepad.com/tagalong_developer_journa/

Этот урок здесь помог нам и, возможно, большинству разработчиков, использующих ffmpeg для начала работы. dranger.com/ffmpeg/ "

Наконец,

У Apple, возможно, не было бы проблем с использованием миниатюры, сгенерированной с видеокамеры, я не думаю, что она находится в личной папке, однако она создается только камерой, а не для видео, выбранных из средства выбора изображений.

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