【问题标题】:PHImageManager requestAVAssetForVideo getting nil from second timePHImageManager requestAVAssetForVideo 从第二次获得零
【发布时间】:2017-03-02 10:18:06
【问题描述】:

此代码第一次正常工作。

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);
            });
        }];

从第二次开始,我将 'asset' 和 'audioMix' 设为 nil。 '信息'如下

{
    PHImageResultDeliveredImageFormatKey = 0;
    PHImageResultIsInCloudKey = 0;
    PHImageResultWantedImageFormatKey = 20002;
}

注意:碰巧无法从“照片”播放相同的视频 应用。

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

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

【问题讨论】:

    标签: ios objective-c phasset


    【解决方案1】:

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

    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);
            });
        }];
    

    编辑:请求选项未传入。

    HTH,

    【讨论】:

      猜你喜欢
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多