音频自用收藏iOS 开发继续加油

iOS 视频压缩

2016-06-15  本文已影响1053人  英秋Rachel

iPhone默认录制视频为高质量视频,视频体积很大,对流量,网速都是很大的考验。
测试发现从高质量( AVAssetExportPresetHighestQuality) 转到低质量(AVAssetExportPresetMediumQuality) 画面质量肉眼看影响不大。 体积可从80M降到15M. 但是使用AVAssetExportPresetLowQuality 并不会再降低多少体积😒

以下代码提供了视频从高质量到低质量的转换:


-(void)videoCompressionWithUrl:(NSURL *)url{

   
    NSString *docuPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    
    NSString *destFilePath = [docuPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.MOV",[[[NSUUID UUID]UUIDString]substringToIndex:8]]];
    NSURL *destUrl = [NSURL fileURLWithPath:destFilePath];
    
    //将视频文件copy到沙盒目录中
    NSFileManager *manager = [NSFileManager defaultManager];
    NSError *error = nil;
    [manager copyItemAtURL:url toURL:destUrl error:&error];
    
    //加载视频资源
    AVAsset *asset = [AVAsset assetWithURL:destUrl];
    //创建视频资源导出会话
    AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];
    //创建导出视频的URL
    NSString *resultPath = [docuPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.MOV",[[[NSUUID UUID]UUIDString]substringToIndex:8]]];
    session.outputURL = [NSURL fileURLWithPath:resultPath];
    //必须配置输出属性
    session.outputFileType = @"com.apple.quicktime-movie";
    //导出视频
    [session exportAsynchronouslyWithCompletionHandler:^{
       
         NSLog(@"压缩后的视频地址为 %@",resultPath);
         //删除沙盒中的高质量视频文件     
        [manager removeItemAtPath:destFilePath error:nil];
        
        
    }];
    
    
}



上一篇下一篇

猜你喜欢

热点阅读