Редактировать: Это симулятор.Я запускал его на «реальном» устройстве, и оба метода работали.Ответ о том, как заставить его работать, симулятор все равно ответил бы на этот вопрос.
Я пытаюсь сохранить видео с локального 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()
}
}