首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Asset获取慢动作视频的文件Url?

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

Stack Overflow用户
提问于 2017-08-02 19:03:17
回答 1查看 682关注 0票数 7

我正在获取普通视频的文件url,但慢动作视频资产类型为AVComposition。我正在尝试使用AVAssetExportSession,但它消耗了大量的时间。

代码语言:javascript
复制
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]]) {
     }
 }];
EN

回答 1

Stack Overflow用户

发布于 2021-09-21 16:02:45

PHImageRequestOptions.version属性的默认值为PHImageRequestOptionsVersionCurrent

只需将版本分配给PHImageRequestOptionsVersionUnadjusted,否则PHImageRequestOptionsVersionOriginal将返回原始的慢动作视频。

代码语言:javascript
复制
PHImageRequestOptions * options = [[PHImageRequestOptions alloc] init];

options.version = PHImageRequestOptionsVersionUnadjusted;
// or 
options.version = PHImageRequestOptionsVersionOriginal;

希望这对某些人有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45459059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档