编辑:这是模拟器。我在“真实”设备上运行它,两种方法都起作用。关于使其成为模拟器的答案仍然可以回答问题。
我正在尝试将视频从本地URL保存到相机胶卷。在这个网站上,我又一次看到了很多相同的问题,不幸的是,我很难将一个简单的视频保存到相机胶卷中。
它仅将视频帧保存在相机胶卷中。
我创建了两条复制路径。
Github:https://github.com/Jasperav/VideoGlitch(克隆,运行,等待几秒钟并转到相机胶卷,只有一帧)
代码
别忘了将此键添加到info.plist
隐私-图片库使用说明
和
隐私-媒体库使用说明
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let randomURL = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first!.appendingPathComponent("\(Int.random(in: 1...10000)).mp4")
let downloadVideoURL = URL(string: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4")!
PHPhotoLibrary.requestAuthorization({ _ in })
URLSession.shared.dataTask(with: downloadVideoURL) { (data, _, _) in
try! data!.write(to: randomURL)
if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(randomURL.relativePath) {
print("Done saving method 1")
UISaveVideoAtPathToSavedPhotosAlbum(randomURL.relativePath, nil, nil, nil)
}
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: randomURL)
}) { saved, error in
print("Done saving method 2")
// TODO: Error handler
assert(error == nil && saved)
}
print("Done with saving")
}.resume()
}
}