Ich habe einen Fehler und ein Problem. Ich möchte ein geändertes Video in eine Kamerarolle exportieren, aber das exportierte Video ist nicht mit der Kamerarolle kompatibel.AVAssetExportSession - exportierte Video nicht kompatibel mit der Kamera roll
Ich möchte auch das erste aufgezeichnete Video entfernen, so dass ich mehr als einmal aufnehmen kann, aber es erzeugt einen Fehler und es ergibt keinen Sinn. Wenn ich den Code auskommentiere, wird ein Fehler angezeigt, der mir sagt, dass der letzte Pfad nicht existiert. Ich nehme an, dass dies den ersten Film löscht, BEVOR die modifizierte Version exportiert wird. Aber ich verstehe nicht, warum das passiert, da der Entfernungscode UNTER dem Exportcode ist.
Hier ist der Code:
// Create Date Formatter
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd-hh-mm-ss"
// Create Export Session
let exportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality)
exportSession?.videoComposition = videoComposition
do {
try exportSession?.outputURL = NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true).URLByAppendingPathComponent(dateFormatter.stringFromDate(NSDate())).URLByAppendingPathExtension("mov")
}
catch {
print(error)
}
exportSession?.outputFileType = AVFileTypeQuickTimeMovie
exportSession?.exportAsynchronouslyWithCompletionHandler({
print("Output File Type: \(exportSession?.outputFileType)")
print("Output URL: \(exportSession?.outputURL?.absoluteString)")
print("Video Compatible W/ Camera Roll: \(exportSession?.asset.compatibleWithSavedPhotosAlbum)")
//-----SAVE-----
if exportSession?.status == AVAssetExportSessionStatus.Completed
{
print("Export Finished")
if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum((exportSession?.outputURL?.absoluteString)!) //Returns false...
{
UISaveVideoAtPathToSavedPhotosAlbum((exportSession?.outputURL?.absoluteString)!, self, nil, nil)
print("Video Saved")
// Show Message
self.showMessage()
}
else
{
print("Video Not Saved")
}
}
else if exportSession?.status == AVAssetExportSessionStatus.Failed
{
print("Export Error: \(exportSession?.error)")
print("Export Failed")
}
else
{
print("Export Cancelled")
}
})
// The code below generates an error
// Remove Temporary Video
// do
// {
// try NSFileManager.defaultManager().removeItemAtURL(initialOutputURL)
// }
// catch
// {
// print(error)
// }
Also, wo ist die Unvereinbarkeit von? Ich möchte feststellen, dass das Protokoll ein QuickTime-Format und eine Auflösung von 720x720 zeigt.