ios - 如何从 Asset 中获取慢动作视频的文件 Url?

标签 ios objective-c iphone avasset avcomposition

我正在获取普通视频的文件 url,但慢动作视频 Assets 类型是 AVComposition .我正在尝试 AVAssetExportSession但它消耗大量时间。

PHVideoRequestOptions *options=[[PHVideoRequestOptions alloc] init];
options.version = PHVideoRequestOptionsVersionCurrent;
options.networkAccessAllowed = YES;

[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset *avAsset, AVAudioMix *audioMix, NSDictionary *info) {

     if(([avAsset isKindOfClass:[AVComposition class]] && ((AVComposition *)avAsset).tracks.count == 2)) {

         //Output URL of the slow motion file.
         NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
         NSString *documentsDirectory = paths.firstObject;
         NSString *myPathDocs =  [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"mergeSlowMoVideo-%d.mov",arc4random() % 1000]];
         NSURL *url = [NSURL fileURLWithPath:myPathDocs];

         //Begin slow mo video export
         AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:avAsset presetName:AVAssetExportPresetHighestQuality];
         exporter.outputURL = url;
         exporter.outputFileType = AVFileTypeQuickTimeMovie;
         exporter.shouldOptimizeForNetworkUse = YES;

         [exporter exportAsynchronouslyWithCompletionHandler:^{

             dispatch_async(dispatch_get_main_queue(), ^{
                 if (exporter.status == AVAssetExportSessionStatusCompleted) {
                 }
             });
         }];
     } else if ([avAsset isKindOfClass:[AVURLAsset class]]) {
     }
 }];

最佳答案

PHImageRequestOptions.version属性的默认值为 PHImageRequestOptionsVersionCurrent .
只需将版本分配给 PHImageRequestOptionsVersionUnadjustedPHImageRequestOptionsVersionOriginal将返回原始慢动作视频。

PHImageRequestOptions * options = [[PHImageRequestOptions alloc] init];

options.version = PHImageRequestOptionsVersionUnadjusted;
// or 
options.version = PHImageRequestOptionsVersionOriginal;
希望这对某人有用。

关于ios - 如何从 Asset 中获取慢动作视频的文件 Url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45459059/

相关文章:

iphone - 如何在 iphone 中制作像 pop 这样的动画而不是 push

iphone - 如何获取UITableViewCell的imageView上的触摸事件?

iOS Sqlite 数据库不显示第一条记录

ios - NSJSONSerialization 给我错误 "Duplicate key"

ios - 如何在 Xcode 中的表格 View 底部添加搜索栏?

ios - iphone 6 的自定义导航栏图像

ios - 为什么在 iOS 8 及更高版本中使用 @1x​​ 图像?

ios - Apple Mach-O 链接器错误 - 链接器命令失败,退出代码为 1

ios - 创建主题标签按钮

objective-c - 如何在 NSMutableArray 上添加观察者?