美文网首页
视频压缩

视频压缩

作者: QG不吃鱼的猫 | 来源:发表于2018-07-04 10:41 被阅读7次
    • (CGFloat)fileSize:(NSURL *)path
      {
      return [[NSData dataWithContentsOfURL:path] length]/1024.00/1024.00;
      }

    //压缩

    • (void)compression {
      // CFAbsoluteTime startTime =CFAbsoluteTimeGetCurrent();
      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 = [KJUtility kj_getKJAlbumFilePath];
      NSString* name = [KJUtility kj_getNewFileName];

      NSString* videoPath = [path stringByAppendingPathComponent:name];

      //判断文件是否存在,如果已经存在删除
      [[NSFileManager defaultManager] removeItemAtPath:videoPath error:nil];
      //设置输出路径
      session.outputURL = [NSURL fileURLWithPath:videoPath];
      //设置输出类型 这里可以更改输出的类型 具体可以看文档描述
      session.outputFileType = AVFileTypeMPEG4;

      [session exportAsynchronouslyWithCompletionHandler:^{
      NSLog(@"%@",[NSThread currentThread]);
      //压缩完成
      if(session.status==AVAssetExportSessionStatusCompleted) {
      CompressURL = session.outputURL;
      NSLog(@"压缩完毕,压缩后大小 %f MB",[self fileSize:CompressURL]);

    // CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime);
    // NSLog(@"Linked in %f ms", linkTime *1000.0);
    };
    }];

    }

    相关文章

      网友评论

          本文标题:视频压缩

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