iPhone Read UIimage (frames) from video with AVFoundation

后端 未结 5 2085
耶瑟儿~
耶瑟儿~ 2020-11-29 18:14

Sorry for my english) Looking for information about read frames from a video with iPhone i found this project, http://www.codza.com/extracting-frames-from-movies-on-iphone/c

5条回答
  •  心在旅途
    2020-11-29 18:44

    Here is code to get FPS images from video

    1) Import

    #import 
    

    2) in viewDidLoad

        videoUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"VfE_html5" ofType:@"mp4"]];
        [self createImage:5]; // 5 is frame per second (FPS) you can change FPS as per your requirement.
    

    3) Functions

    -(void)createImage:(int)withFPS {
        AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoUrl options:nil];
        AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
        generator.requestedTimeToleranceAfter =  kCMTimeZero;
        generator.requestedTimeToleranceBefore =  kCMTimeZero;
    
        for (Float64 i = 0; i < CMTimeGetSeconds(asset.duration) *  withFPS ; i++){
            @autoreleasepool {
                CMTime time = CMTimeMake(i, withFPS);
                NSError *err;
                CMTime actualTime;
                CGImageRef image = [generator copyCGImageAtTime:time actualTime:&actualTime error:&err];
                UIImage *generatedImage = [[UIImage alloc] initWithCGImage:image];
                [self savePhotoToAlbum: generatedImage]; // Saves the image on document directory and not memory
                CGImageRelease(image);
            }
        }
    }
    
    -(void)savePhotoToAlbum:(UIImage*)imageToSave {
    
        [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
            PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:imageToSave];
        } completionHandler:^(BOOL success, NSError *error) {
            if (success) {
                NSLog(@"sucess.");
            }
            else {
                NSLog(@"fail.");
            }
        }];
    }
    

提交回复
热议问题