2

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

同じ問題について話している質問を見つけました。

ALAssetsLibrary のような PHPhotoLibrary の使用方法

しかし、それは正確な答えには言及していません。

4

1 に答える 1

4

TSI で Apple に質問しました。そして彼らの答えは、次のAPIを使用することです

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

正しい互換性を得ることができたようです。

重要な点の 1 つは、PHPhotoLibrary の値canSaveVideoが NO の場合でもビデオを保存できることです。

ありがとうございました。

于 2016-08-01T05:13:53.697 に答える