Ios PHImageManager请求视频的AssetForVideo从第二次获得零

Ios PHImageManager请求视频的AssetForVideo从第二次获得零,ios,objective-c,phasset,Ios,Objective C,Phasset,此代码首次正常工作 PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc]init]; options.version = PHVideoRequestOptionsVersionCurrent; options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic; options.networkAccessAll

此代码首次正常工作

PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc]init];
        options.version = PHVideoRequestOptionsVersionCurrent;
        options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic;
        options.networkAccessAllowed = YES;
        [[PHImageManager defaultManager] requestAVAssetForVideo:self.phAsset options:nil resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
            dispatch_async(dispatch_get_main_queue(), ^{
                AVURLAsset *urlAsset = (AVURLAsset*)asset;
                NSURL *url = urlAsset.URL;
                completionHandler(url);
            });
        }];
从第二次开始,我得到的“资产”和“音频混音”为零。 “信息”如下

{
    PHImageResultDeliveredImageFormatKey = 0;
    PHImageResultIsInCloudKey = 0;
    PHImageResultWantedImageFormatKey = 20002;
}
注意:发生后无法播放来自“照片”的相同视频 应用程序

当我使用上面的代码时,我得到的URL如下(仅第一次,第二次以后,URL变为零)

file:///Users/OD-1007/Library/Developer/CoreSimulator/Devices/66C92D6B-B528-40A4-A238-FC8C664E3774/data/Media/DCIM/100APPLE/IMG_0011.mp4

当我使用UIImagePickerController时,它工作得非常好,url是

file:///Users/OD-1007/Library/Developer/CoreSimulator/Devices/66C92D6B-B528-40A4-A238-FC8C664E3774/data/Containers/Data/Application/35B00947-04A4-4906-8E16-21FB4FF5A3F5/tmp/trim.74E42978-8B87-4C37-9B4C-8B70122A794F.MOV


我认为您的请求的问题是apple Photo没有同步到iCloud。这使得phvideorequestoptionversioncurrent由于一些未记录的原因无法工作。如果将版本切换到:

PHVideoRequestOptionsVersionOriginal 
它应该会起作用。这就是造成问题的原因,在我的情况下,也是解决问题的原因

PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc]init];
options.version = PHVideoRequestOptionsVersionOriginal;
options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic;
options.networkAccessAllowed = YES;
[[PHImageManager defaultManager] requestAVAssetForVideo:self.phAsset options:options resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
        dispatch_async(dispatch_get_main_queue(), ^{
            AVURLAsset *urlAsset = (AVURLAsset*)asset;
            NSURL *url = urlAsset.URL;
            completionHandler(url);
        });
    }];
编辑:未传入请求选项


嗯,

我认为您的请求的问题是apple Photo没有同步到iCloud。这使得phvideorequestoptionversioncurrent由于一些未记录的原因无法工作。如果将版本切换到:

PHVideoRequestOptionsVersionOriginal 
它应该会起作用。这就是造成问题的原因,在我的情况下,也是解决问题的原因

PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc]init];
options.version = PHVideoRequestOptionsVersionOriginal;
options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic;
options.networkAccessAllowed = YES;
[[PHImageManager defaultManager] requestAVAssetForVideo:self.phAsset options:options resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
        dispatch_async(dispatch_get_main_queue(), ^{
            AVURLAsset *urlAsset = (AVURLAsset*)asset;
            NSURL *url = urlAsset.URL;
            completionHandler(url);
        });
    }];
编辑:未传入请求选项

嗯,