将本地视频保存到相机胶卷只能保存1个帧

时间:2019-06-16 20:31:10

标签: swift

编辑:这是模拟器。我在“真实”设备上运行它,两种方法都起作用。关于使其成为模拟器的答案仍然可以回答问题。

我正在尝试将视频从本地URL保存到相机胶卷。在这个网站上,我又一次看到了很多相同的问题,不幸的是,我很难将一个简单的视频保存到相机胶卷中。

它仅将视频帧保存在相机胶卷中。

我创建了两条复制路径。

  1. Github:https://github.com/Jasperav/VideoGlitch(克隆,运行,等待几秒钟并转到相机胶卷,只有一帧)

  2. 代码

别忘了将此键添加到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()
    }
}

0 个答案:

没有答案