Ich versuche ein Video zu speichern, das mit der Kamera mit dem UIImagePickerController aufgenommen wurde. Ich habe zwei verschiedene Wege ausprobiert, und beide funktionieren überhaupt nicht.UIImagePickerController - Gespeichertes Video auf Kamera speichern Fehler
Erster Versuch:
if let pathURL = info["UIImagePickerControllerMediaURL"] as! URL?, mediaType == kUTTypeMovie {
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: pathURL)
}, completionHandler: { (isSuccessfull, error) in
if error != nil {
// ERROR
// error.localizedDescription value below
// "The operation couldn’t be completed. (Cocoa error -1.)"
} else if isSuccessfull {
// SUCCESS
}
})
}
An diesem Versuch, bin ich immer erhalte die Störung "The operation couldn’t be completed. (Cocoa error -1.)"
Zweiter Versuch:
if let filePath = info["UIImagePickerControllerMediaURL"] as! NSURL,
let stringPath = filePath.path {
UISaveVideoAtPathToSavedPhotosAlbum(stringPath, self, #selector(Controller.videoSaved(videoPath:didFinishSavingWithError:contextInfo:)), nil)
}
Diese nicht funktioniert entweder ... Der Rückruf Der Fehler ist null, aber das Video wird nicht in der Kamerarolle gespeichert. Auch, wenn ich das UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(stringPath)
benutze, gibt mir diese Methode auch false
die ganze Zeit zurück. Ich kann nicht verstehen, warum das aufgenommene Video nicht kompatibel wäre.
Ich weiß wirklich nicht, was ich falsch mache. Was vermisse ich? Eine Konfiguration in plist?
Hier ist, wie wie der Wert von info["UIImagePickerControllerMediaURL"]
aussehen: file:///private/var/mobile/Containers/Data/Application/2B9BE04A-17B3-49CE-B4BA-C45F183E9A64/tmp/837294779101__C4825AFE-8140-420F-ACD0-64623C7A4753.MOV
Für mit der Kamera aufgenommenen Bilder, PHPhotoLibrary Methode sehr gut funktioniert ... Es ist nur Videos, die nicht in der Lage ist, um gerettet zu werden.
check out diese Antwort in Frage https://stackoverflow.com/questions/9991332/how-to-save-recorded-video-into-photo-album –
Danke Jitendra. Ich habe versucht, denselben Code direkt in die Delegate-Methode zu schreiben, und es hat funktioniert. Ich habe diese Speicheroperation ursprünglich nach einem API-Aufruf ausgeführt. Meine Annahme ist, dass die Datei auf diesem Pfad wahrscheinlich nicht nach wenigen Sekunden verfügbar ist ... – manonthemoon
Sie können das Asset aus der Info mit diesem Schlüssel 'UIImagePickerControllerPHAsset' abrufen. –