gpt4 book ai didi

ios - 无法上传照片库视频,但可以上传从相机 iOS 拍摄的视频

转载 作者:行者123 更新时间:2023-11-29 00:38:21 25 4
gpt4 key购买 nike

我正在开发一个需要将视频上传到服务器的应用程序。现在我有两件事:

  1. 使用UIImagePickerController拍摄视频,生成缩略图然后上传到服务器
  2. 从照片库中选择视频,生成缩略图,然后上传到服务器。

现在两者之间的唯一区别是:

当我使用“generateImageAsynchronouslyForTimes:completionHandler:”方法时,我在其 completionHandler block 中收到一个调用并获得一个 AVAsset。现在我使用以下代码获取其 URL:

    NSURL *path_url = [(AVURLAsset*)asset URL];

这是我认为事情变得一团糟的地方,因为在情况 2 中我得到了类似的东西(当我从图库中选择视频时):

文件:///var/mobile/Media/DCIM/102APPLE/IMG_2439.mp4

所以,当情况 1 运行正常时,我无法上传它。这是否与沙箱有关?

这两条路径有什么区别?

  1. file:///private/var/mobile/Containers/Data/Application/DA4632E3-FA25-4EBE-9102-62495BF105BF/tmp/trim.07786CFE-2477-4146-9EA0-0A04042A8D05.MOV"
  2. 文件:///var/mobile/Media/DCIM/102APPLE/IMG_2439.mp4

我猜它的 appSandbox 路径在 1)

最佳答案

在 iOS 中,每个应用程序就像一个岛屿,都有一个沙箱环​​境。因此,如果您想上传不在沙箱中的视频,您必须将该视频复制到您的沙箱中,然后您可以上传它。这是您可以执行此操作的方法:

NSURL *path_url = [(AVURLAsset*)asset URL];

PHAssetResource *asset_resource = [[PHAssetResource assetResourcesForAsset:[fetchResult lastObject]]firstObject];

PHAssetResourceRequestOptions *options = [PHAssetResourceRequestOptions new];
options.networkAccessAllowed = YES;
NSURL *newURL = [self getSandboxURLFromURL:path_url];

[[PHAssetResourceManager defaultManager] writeDataForAssetResource:asset_resource toFile:newURL options:options completionHandler:^(NSError * _Nullable error) {

//here you will get the newURL that you will use...
}];

//获取沙箱URL的方法

-(NSURL*)getSandboxURLFromURL:(NSURL*)photos_gallery_url{

NSString *last_path_component = [photos_gallery_url lastPathComponent];
NSString *pathToWrite = [NSTemporaryDirectory() stringByAppendingString:last_path_component];
NSURL *localpath = [NSURL fileURLWithPath:pathToWrite];
return localpath;
}

关于ios - 无法上传照片库视频,但可以上传从相机 iOS 拍摄的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40106485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com