在 PHPhotoLibrary 中,如何知道视频文件是不是可以保存在 iPhone 上

Posted

技术标签:

【中文标题】在 PHPhotoLibrary 中,如何知道视频文件是不是可以保存在 iPhone 上【英文标题】:In PHPhotoLibrary, how to know whether video file can save on iPhone or not在 PHPhotoLibrary 中,如何知道视频文件是否可以保存在 iPhone 上 【发布时间】:2016-07-10 16:07:43 【问题描述】:

我正在从 ALAssetsLibrary 切换到 phphotoLibrary,想知道视频文件是否可以保存。 在 ALAssetsLibray 中,您知道,我们可以在开始使用 API 保存视频文件之前知道它

- (BOOL)videoAtPathIsCompatibleWithSavedPhotosAlbum:(NSURL *)videoPathURL;

有谁知道 PHPhotoLibraryvideoAtPathIsCompatibleWIthSavedPhotoAlbum 的替代 API 吗?

或者您是否知道意味着视频文件无法保存在 ios 设备上的确切错误代码?

我保存视频文件的代码如下,

- (void)saveVideoFile:(NSURL *)videoURL completion:(savePhotoFileCompletion)completion

    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^
            PHAssetChangeRequest *assetChangeRequest;
            assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:videoURL];

            PHAssetCollectionChangeRequest *assetCollectionChangeRequest =
                [PHAssetCollectionChangeRequest changeRequestForAssetCollection:self.assetCollection];
            [assetCollectionChangeRequest addAssets:@[ [assetChangeRequest placeholderForCreatedAsset] ]];

        

        completionHandler:^(BOOL success, NSError *_Nullable error) 
            DBGLog(@"success=%@, error=%@", (success ? @"YES" : @"NO"), error);
            completion(success, error);
        ];

我发现这个问题谈论的是同一个问题。

How to use PHPhotoLibrary like ALAssetsLibrary

但它并没有提到确切的答案。

【问题讨论】:

【参考方案1】:

我通过 TSI 向 Apple 提出了我的问题。 他们的答案是使用以下 API

AVAsset *avAsset = [AVAsset assetWithURL:[NSURL fileURLWithPath:videoPath]];
BOOL canSaveVideo = [avAsset isCompatibleWithSavedPhotosAlbum];

看来我可以得到正确的兼容性。

重要的一点是即使canSaveVideo 的值为NO,PHPhotoLibrary 也可以保存视频。

谢谢。

【讨论】:

以上是关于在 PHPhotoLibrary 中,如何知道视频文件是不是可以保存在 iPhone 上的主要内容,如果未能解决你的问题,请参考以下文章

在 PHPhotoLibrary 中禁用删除请求的确认

移动而不是复制到 PHPhotoLibrary

在应用程序处于后台时访问 PHPhotoLibrary

如何在 iOS9 中使用 PHPhotolibrary 将照片保存在带有元数据的相册中?

如何在混合代码 Objective-C/C++ 文件(.mm 文件)中使用 PHPhotoLibrary?

如何使用 PHPhotoLibrary 获取照片的日期