2012-04-19 35 views
11

Tôi đang cố tải khung hình đầu tiên của video bằng các lớp trong AVFoundation. Nhưng có vẻ như không có hình ảnh nào cả.Khung hình đầu tiên của video bằng AVFoundation

Mã của tôi hiện nay trông như thế này

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

Giá trị của con đường video là /var/mobile/Applications/02F42CBF-D8BD-4155-85F2-8CF1E55B5023/Documents/videos/1334300431637030.mp4 đó chắc chắn là một đoạn video, kể từ khi tôi có thể chơi nó với MPMoviePlayerViewController. Tôi không chắc chắn những gì tôi đang làm sai, nhưng bất kỳ lời đề nghị sẽ là hữu ích.

Cảm ơn.

Trả lời

18

Tôi đã giải quyết. Rõ ràng việc sử dụng [NSURL fileURLWithPath:videoPath] thay vì [NSURL URLWithString:videoPath] tạo nên tất cả sự khác biệt.

7

Tôi đã sử dụng giải pháp null0pointer nhưng trong một số video, tôi đã nhận được khung hình đầu tiên được xoay. Để giải quyết vấn đề này, tôi đặt thành TRUE thuộc tính appliesPreferredTrackTransform của AVAssetImageGenerator. Và mã này trông giống như sau:

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]; 
Các vấn đề liên quan