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