2012-02-05 7 views
25

Nagrywam wideo z kamery iPhone'a przy użyciu kodu AVCam dostarczonego przez Apple.Uzyskiwanie migawki wideo dla miniatury

Po nagraniu filmu wideo jest on zapisywany w bibliotece zdjęć.

Nowy widok jest ładowany, tutaj potrzebna jest miniatura obrazu wideo.

Mam ścieżkę do filmu:

file://localhost/private/var/mobile/Applications/ED45DEFC-ABF9-4A5E-9102-21680CC1448E/tmp/output.mov 

I nie wydają się dowiedzieć jak dostać się pierwsza klatka filmu do wykorzystania jako miniatury.

Każda pomoc będzie bardzo wdzięczna i dziękuję za poświęcony czas.


EDIT

skończyło się za pomocą tego, nie jestem pewien, dlaczego wraca obraz na boki?

- (UIImage*)loadImage { 

    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:vidURL 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]; 
    NSLog(@"err==%@, imageRef==%@", err, imgRef); 

    return [[UIImage alloc] initWithCGImage:imgRef]; 

} 

Odpowiedz

45

Aby fix orientacja miniatur ustawić appliesPreferredTrackTransform do YES w instancji AVAssetImageGenerator. Jeśli dodasz własną kompozycję wideo, musisz włączyć odpowiednią transformację, aby obrócić film zgodnie z oczekiwaniami.

generate.appliesPreferredTrackTransform = YES; 

Należy pamiętać o zwolnieniu uzyskanego obrazu referencyjnego za pomocą CGImageRelease.

Aby zażądać wielu miniatur, lepiej postępować asynchronicznie z generateCGImagesAsynchronouslyForTimes:completionHandler:.

+0

+1 Perfect, dzięki !!! – bentford

+0

+1 Właśnie to chciałem dodać! :) –

+0

Daje mi błąd AVErrorOperationNotSupportedForAsset. plz help – ruyamonis346