PHImageManager requestAVAssetForVideo从第二次开始变零

She*_*shy 1 objective-c ios phasset

此代码首次正常运行。

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);
            });
        }];
Run Code Online (Sandbox Code Playgroud)

从第二次起,我将'asset'和'audioMix'设为nil。“信息”如下

{
    PHImageResultDeliveredImageFormatKey = 0;
    PHImageResultIsInCloudKey = 0;
    PHImageResultWantedImageFormatKey = 20002;
}
Run Code Online (Sandbox Code Playgroud)

注意:发生这种情况后,无法从“照片”应用程序播放相同的视频。

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

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

当我使用UIImagePickerController时,它可以完美运行,并且网址为

文件:/// 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

Luc*_*hou 5

我认为您的请求存在问题,因为Apple Photo无法同步到iCloud。这使得PHVideoRequestOptionsVersionCurrent由于某些未记录的原因而无法正常工作。如果您将版本切换到:

PHVideoRequestOptionsVersionOriginal 
Run Code Online (Sandbox Code Playgroud)

它应该工作。就我而言,这就是导致此问题的原因,并且为我解决了该问题。

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);
        });
    }];
Run Code Online (Sandbox Code Playgroud)

编辑:请求选项未传递。

HTH,