iOS 视频压缩

作者: 英秋Rachel | 来源:发表于2016-06-15 14:54 被阅读1053次

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

    相关文章

      网友评论

      • 谈Xx:写的频率很高啊 我下午刚看一遍,又有新的
        英秋Rachel:@谈Xx 我本意也是留着备用的,很多东西容易忘
        谈Xx:@英秋Rachel 虽然每次都是一个方法,但我还是留着备用了:joy:
        英秋Rachel:@谈Xx 懒着呢,三个月没写了:joy:

      本文标题:iOS 视频压缩

      本文链接:https://www.haomeiwen.com/subject/pjcpdttx.html