Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • How to Compress Video File Through coding in ios

    • 0
    • 1
    • 1
    • 0
    • 0
    • 0
    • 0
    • 0
    • 4.57k
    Comment on it

    Hello all,
    Refer the code below to compress the video file and save the compressed file in document directory.

    - (void)compressMyVideo:(NSURL *)videoPath completionBlock:(void(^)(id data, BOOL result))block{
    
        NSLog(@"compressing ====%@", videoPath);
        completionBlock = block;
    
        NSURL *videoURL = videoPath;//[NSURL fileURLWithPath:videoPath];
    
        NSLog(@"video url is== %@", videoURL);
    
        NSString *outputPath = [self outputFilePath];
    
        NSURL *outputURL = [NSURL fileURLWithPath:outputPath];
    
        [self convertVideoToLowQuailtyWithInputURL:videoURL outputURL:outputURL handler:^(AVAssetExportSession *exportSession)
         {
             if (exportSession.status == AVAssetExportSessionStatusCompleted)
             {
                 printf("completed\n");
    
                 completionBlock(outputURL, YES);
             }
             else
             {
                 printf("error\n");
                 completionBlock(nil, NO);
             }
         }];
    }
    
    // Getting the path of outPut file
    - (NSString *)outputFilePath{
    
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    
    
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *path = [documentsDirectory stringByAppendingPathComponent:@"compressed.MOV"]; NSFileManager *fileManager = [NSFileManager defaultManager];
    
    //    return path;
    
        if ([fileManager fileExistsAtPath: path])
        {
            [fileManager removeItemAtPath:path error:nil];
        }
    
        path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"compressed.MOV"] ];
    
        NSLog(@"path is== %@", path);
    
        return path;
    
    }
    
    
    // Actual compression is here.
    
    - (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL
                                       outputURL:(NSURL*)outputURL
                                         handler:(void (^)(AVAssetExportSession*))handler
    {
    
    
    //    [self startCompressingTheVideo:outputURL];
    //
    //
    //    return;
        [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
    
    //    AVAssetWriter
    
        AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
    
        AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetLowQuality];
    
    
    //    exportSession.fileLengthLimit = 30*1024;
    
        exportSession.outputURL = outputURL;
        exportSession.outputFileType = AVFileTypeQuickTimeMovie;
        [exportSession exportAsynchronouslyWithCompletionHandler:^(void)
         {
             handler(exportSession);
             //         [exportSession release];
         }];
    }
    

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: