iOS18 中 requestAVAssetForVideo 的问题

问题描述 投票:0回答:1

我在 iOS 18 上遇到问题:

我使用以下代码来获取照片套件中的视频路径:

[PHImageManager defaultManager] requestAVAssetForVideo:asset options:videoOptions resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
    BOOL yesOrNo = [self isInCloudForInfo:info];
    NSString *localPath = nil;
    if (!yesOrNo && [asset isKindOfClass:[AVURLAsset class]]) {
        localPath = [(AVURLAsset *)asset URL].absoluteString;
    }
   // Do something with localPath...
}]

当我使用

[[[NSFileManager defaultManager] fileExistsAtPath:localPath]
时,它返回NO。另外,带有
.duration
AVURLAsset
init 的
localPath
返回 0,但是可以通过
AVPlayer
播放此视频。

当我通过

localPath
得到
localPath = [(AVURLAsset *)asset URL].relativePath
,并且
[[NSFileManager defaultManager] fileExistsAtPath:localPath]
返回YES,但是
AVURLAsset
无法播放视频,提示“您没有权限”。错误。

我该如何解决?

以下是我在 Google 上找到的一些可能相关的链接:

我必须使用

Photos Kit
吗?如果是这样,我需要做出重大改变来适应iOS18

photo phasset ios18
1个回答
0
投票

https://medium.com/@mi9nxi/ios-18-phasset-url-from-requestavasset-09c67fd069f1

使用

relativePath 
而不是
absoluteString 
可以修复它。

© www.soinside.com 2019 - 2024. All rights reserved.