Mam plik NSURL, który zawiera wideo i chcę nagrać klatkę tego filmu dziesięć razy co sekundę. Mam kod, który przechwyci obraz mojego odtwarzacza, ale mam problem z jego ustawieniem, aby przechwycić 10 klatek na sekundę. Próbuję czegoś takiego, ale zwraca on tę samą początkową klatkę wideo, odpowiednią liczbę razy? Oto, co mam:iOS Zrób kilka zrzutów ekranu
AVAsset *asset = [AVAsset assetWithURL:videoUrl];
CMTime vidLength = asset.duration;
float seconds = CMTimeGetSeconds(vidLength);
int frameCount = 0;
for (float i = 0; i < seconds;) {
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
CMTime time = CMTimeMake(i, 10);
CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL];
UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
NSString* filename = [NSString stringWithFormat:@"Documents/frame_%d.png", frameCount];
NSString* pngPath = [NSHomeDirectory() stringByAppendingPathComponent:filename];
[UIImagePNGRepresentation(thumbnail) writeToFile: pngPath atomically: YES];
frameCount++;
i = i + 0.1;
}
Ale zamiast uzyskać ramkę w bieżącym czasie i wideo, mam tylko początkową klatkę?
Jak mogę uzyskać klatkę wideo 10 razy na sekundę?
Dzięki za pomoc :)
To samo pytanie używając Swift http://stackoverflow.com/questions/32286320/grab-frames-from-video-using-swift/32297251 – arpo