iOS视频压缩(仿微信录像)

视频压缩

AVFoundation框架中提供了视频压缩的功能,有一些应用场景,对像素要求不高,但是需要看到视频的,可以对视频进行压缩,比如微信的小视频功能。

//压缩
- (void)compression{ 
NSLog(@"压缩前大小 %f MB",[self fileSize:_videoUrl]); 
// 创建AVAsset对象 
AVAsset* asset = [AVAsset assetWithURL:_videoUrl]; 
/* 
创建AVAssetExportSession对象 
压缩的质量 
AVAssetExportPresetLowQuality 最low的画质最好不要选择实在是看不清楚 
AVAssetExportPresetMediumQuality 使用到压缩的话都说用这个 
AVAssetExportPresetHighestQuality 最清晰的画质  
*/ 
AVAssetExportSession * session = [[AVAssetExportSession alloc]
initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];
 //优化网络 
session.shouldOptimizeForNetworkUse = YES; 
//转换后的格式 
 //拼接输出文件路径 为了防止同名 可以根据日期拼接名字 或者对名字进行MD5加密  
NSString* path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] 
stringByAppendingPathComponent:@"hello.mp4"]; 
//判断文件是否存在,如果已经存在删除 
[[NSFileManager defaultManager]removeItemAtPath:path error:nil]; 
//设置输出路径 
session.outputURL = [NSURL fileURLWithPath:path]; 
 //设置输出类型 这里可以更改输出的类型 具体可以看文档描述 
session.outputFileType = AVFileTypeMPEG4;  
[session exportAsynchronouslyWithCompletionHandler:^{ 
NSLog(@"%@",[NSThread currentThread]);  
//压缩完成
 if(session.status==AVAssetExportSessionStatusCompleted) {
 //在主线程中刷新UI界面,弹出控制器通知用户压缩完成 dispatch_async(dispatch_get_main_queue(), ^{
 NSLog(@"导出完成"); 
CompressURL = session.outputURL; 
NSLog(@"压缩完毕,压缩后大小 %f MB",[self fileSize:CompressURL]); 
                           });
            } 
     }];  
 }

Demo地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,251评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,824评论 4 61
  • 从15岁开始,我就想我要在25岁时死去。 那为什么不在15岁就去死呢。因为那是的我不够勇气,不敢去死。 如今,我2...
    蜉蝣的蜉蝣阅读 1,841评论 0 0
  • 大_满_阅读 1,549评论 0 0
  • 青歌的一魄荡荡悠悠,幻成的样子,站在一旁看着他们。 “你死了。”我说道。 她不解的问:“你是谁。” “我是花精,在...
    铜镜映无邪阅读 1,648评论 0 0

友情链接更多精彩内容