2012-04-19 15 views
11

AVFoundationのクラスを使用してビデオの最初のフレームを取得しようとしています。しかし、それはまったくイメージを得ていないようです。私はMPMoviePlayerViewControllerとそれを再生することができますので、AVFoundationを使用したビデオの最初のフレーム

は私のコードは、現在、ビデオパスの値は間違いなくビデオです/var/mobile/Applications/02F42CBF-D8BD-4155-85F2-8CF1E55B5023/Documents/videos/1334300431637030.mp4あるこの

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]; 

のように見えます。私は何が間違っているのか分かりませんが、どんな提案も役に立ちます。

ありがとうございました。

答えて

18

私はそれを解決しました。明らかに[NSURL URLWithString:videoPath]の代わりに[NSURL fileURLWithPath:videoPath]を使用するとすべての違いがあります。

7

私はnull0pointerソリューションを使用しましたが、一部のビデオでは、最初のフレームを回転させて受信しました。この問題を解決するため、私はAVAssetImageGeneratorのappliedPreferredTrackTransformプロパティをTRUEに設定しました。このコードは次のようになります。

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]; 
関連する問題