两种方式:
1.我一开始用的
ps:和注释说的一样 此方法 无法加载iCloud上的视频或者图片
2.经过我的研究优化 原格式视频直接导出 最终版本
研究了一下午 以此记录,好用点个赞再走!转发请标明出处!!
下面直接cv:
[[PHImageManager defaultManager] requestExportSessionForVideo:model.asset options:[self getVideoRequestOptions] exportPreset:AVAssetExportPresetHighestQuality resultHandler:^(AVAssetExportSession *_Nullable exportSession, NSDictionary *_Nullable info) {
// NSString *outputPath = [self getVideoOutputPath];
// exportSession.outputURL = [NSURL fileURLWithPath:outputPath];
// exportSession.shouldOptimizeForNetworkUse = NO;
// exportSession.outputFileType = AVFileTypeMPEG4;
// if (!CMTimeRangeEqual(timeRange, kCMTimeRangeZero)) {
// exportSession.timeRange = timeRange;
// }
// [exportSession exportAsynchronouslyWithCompletionHandler:^{
// if (success) {
// success(outputPath);
// }
// }];
AVURLAsset*urlAsset = (AVURLAsset*)exportSession.asset;
NSURL*url = urlAsset.URL;
NSLog(@"%@",url);
NSData *data = [NSData dataWithContentsOfURL:urlAsset.URL];
NSString*savePath = [selfgetVideoOutputPath:url.pathExtension];
[datawriteToFile:savePathatomically:YES];
// 回到主线程
dispatch_async(dispatch_get_main_queue(), ^{
// n秒后执行
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 需要延迟执行的代码
if(success) {
success(savePath);
}
});
});
}];