2012-04-19 13 views
11

Próbuję uzyskać pierwszą klatkę wideo przy użyciu klas w AVFoundation. Wygląda jednak na to, że w ogóle nie otrzymuje obrazu.Pierwsza klatka filmu wideo przy użyciu AVFoundation

Moje kodu aktualnie wygląda tak

AVURLAsset* asset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:videoPath] options:nil]; 
AVAssetImageGenerator* imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset]; 
UIImage* image = [UIImage imageWithCGImage:[imageGenerator copyCGImageAtTime:CMTimeMake(0, 1) actualTime:nil error:nil]]; 
[videoFrame setImage:image]; 

Wartość ścieżce wideo jest /var/mobile/Applications/02F42CBF-D8BD-4155-85F2-8CF1E55B5023/Documents/videos/1334300431637030.mp4 który jest zdecydowanie wideo, ponieważ mogę grać z MPMoviePlayerViewController. Nie jestem pewien, co robię źle, ale wszelkie sugestie byłyby pomocne.

Dzięki.

Odpowiedz

18

Rozwiązałem to. Najwyraźniej użycie [NSURL fileURLWithPath:videoPath] zamiast [NSURL URLWithString:videoPath] stanowi różnicę.

7

Użyłem rozwiązania null0pointer, ale w niektórych filmach otrzymałem pierwszą obróconą ramkę. Aby rozwiązać ten problem, ustawiono TRUE na właściwość applyPreferredTrackTransform programu AVAssetImageGenerator. Ten kod wygląda następująco:

AVURLAsset* asset = [AVURLAsset URLAssetWithURL:fileURL options:nil]; 
AVAssetImageGenerator* imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset]; 
[imageGenerator setAppliesPreferredTrackTransform:TRUE]; 
UIImage* image = [UIImage imageWithCGImage:[imageGenerator copyCGImageAtTime:CMTimeMake(0, 1) actualTime:nil error:nil]]; 
[self.imageView setImage:image]; 
Powiązane problemy