首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UISaveVideoAtPathToSavedPhotosAlbum不将视频保存到摄像机卷

UISaveVideoAtPathToSavedPhotosAlbum不将视频保存到摄像机卷
EN

Stack Overflow用户
提问于 2015-07-29 04:22:10
回答 3查看 6.1K关注 0票数 3

我正在尝试使用一瞥记录一个UIView。它成功地将其保存到应用程序的文档文件夹,但我也需要它来保存到用户的相机卷。它不是保存到相机卷,我是一个警报,允许应用程序访问我的相机卷,但它没有保存在任何相册。

我尝试了大量的代码,从以下几个方面:

代码语言:javascript
运行
复制
[self.glimpse startRecordingView:self.view onCompletion:^(NSURL *fileOuputURL) {
        NSLog(@"DONE WITH OUTPUT: %@", fileOuputURL.absoluteString);


      UISaveVideoAtPathToSavedPhotosAlbum(fileOuputURL.absoluteString,nil,nil,nil);





    }];

To此文:

代码语言:javascript
运行
复制
 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        [library writeVideoAtPathToSavedPhotosAlbum:fileOuputURL
                                    completionBlock:^(NSURL *assetURL, NSError *error){NSLog(@"hello");}];

日志打印,但它没有将视频保存到相机卷。

如果有人知道我这不是工作,请告诉我!谢谢!

EN

Stack Overflow用户

发布于 2022-10-26 12:45:02

我与UISaveVideoAtPathToSavedPhotosAlbum面临的一个问题是视频路径扩展。为了将视频从应用程序中下载并保存到照片中,如果它的“快速时间”视频,那么它会给出错误的ALAssetsLibraryErrorDomain / PHPhotosErrorDomain。下面的工作为我工作。改变路径视频扩展为".mp4“解决了我的问题。

代码语言:javascript
运行
复制
public func download(url: URL, completion: @escaping ((URL?, Error?) -> Void)) {
    let cachesDirectoryUrl = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first!
    let pathExtension = url.pathExtension == "quicktime" ? "mp4" : url.pathExtension
    var lastPathComponent = url.lastPathComponent.components(separatedBy: ".").first
        lastPathComponent = lastPathComponent?.appending(".\(pathExtension)")
   let destinationUrl = cachesDirectoryUrl.appendingPathComponent(lastPathComponent ?? "")
   
    if url.isFileURL {
        completion(nil, nil)
    } else if FileManager.default.fileExists(atPath: destinationUrl.path) {
        completion(destinationUrl, nil)
    } else {
        URLSession.shared.downloadTask(with: url) { (location, response, error) in
            guard let tempLocation = location, error == nil else {
                completion(nil, error)
                return
            }

            try? FileManager.default.removeItem(at: destinationUrl)
            do {
                try FileManager.default.moveItem(at: tempLocation, to: destinationUrl)
                completion(destinationUrl, nil)
            } catch let error as NSError {
                completion(nil, error)
            }
        }.resume()
    }
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31691178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档