之前写过“PHAsset获得视频URL时,用requestAVAssetForVideo有时会得到AVComposition这个对象”这个博客http://blog.csdn.net/zhangqiaoge/article/details/78467724有介绍怎么去处理来获得url。
现在又发现一个新的方法,通过
[[PHImageManagerdefaultManager] requestAVAssetForVideo:phassetoptions:options resultHandler:^(AVAsset *_Nullable asset,AVAudioMix * _Nullable audioMix,NSDictionary * _Nullable info) {这个方法得到的info字典如下
po info
{
PHImageFileSandboxExtensionTokenKey = "8f71358aa52f24bddc2fd536abff93d933825f5a;00000000;00000000;000000000000001b;com.apple.avasset.read-only;00000001;01000002;00000001005e20b6;/private/var/mobile/Media/DCIM/100APPLE/IMG_0601.MOV";
PHImageResultDeliveredImageFormatKey = 20000;
PHImageResultIsInCloudKey = 0;
PHImageResultWantedImageFormatKey = 20002;
}
可以获得key为PHImageFileSandboxExtensionTokenKey的值,再对其处理如下
NSString * sandboxExtensionTokenKey = info[@"PHImageFileSandboxExtensionTokenKey"];
NSArray * arr = [sandboxExtensionTokenKeycomponentsSeparatedByString:@";"];
NSString * filePath = [arr[arr.count - 1]substringFromIndex:9];
这个filPath就是这个视频的地址,
注意⚠️ 现在又遇到这个问题,我想在这个方法的block之外用这个地址,但这时这个地址已经无效,只有在block之内有效,要想在block之外有效,必须在这个区域有个变量来保存这个方法得到的asset,这个地址才有效