Ответ 1
Я решил это. По-видимому, использование [NSURL fileURLWithPath:videoPath]
вместо [NSURL URLWithString:videoPath]
делает разницу.
Я пытаюсь получить первый кадр видео, используя классы в AVFoundation. Но, похоже, не получается получить изображение вообще.
В настоящее время мой код выглядит следующим образом
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];
Значение пути видео /var/mobile/Applications/02F42CBF-D8BD-4155-85F2-8CF1E55B5023/Documents/videos/1334300431637030.mp4
, которое, безусловно, является видео, так как я могу воспроизвести его с помощью MPMoviePlayerViewController
. Я не уверен, что я делаю неправильно, но любые предложения были бы полезными.
Спасибо.
Я решил это. По-видимому, использование [NSURL fileURLWithPath:videoPath]
вместо [NSURL URLWithString:videoPath]
делает разницу.
Я использовал null0pointer решение, но в некоторых видеороликах я получил первый фрейм. Чтобы решить эту проблему, я установил для TRUE свойство applyPreferredTrackTransform для AVAssetImageGenerator. И этот код выглядит следующим образом:
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];