Ich erstelle eine Videoexportfunktion für eine meiner Apps. Im Wesentlichen ist das Video eine Serie von einem von sechs verschiedenen Bildern, die für unterschiedliche (kurze) Dauer dauern.Unbekannter zugrunde liegender OSStatus-Fehler -16364 bei Verwendung von AVAssetWriter
Der Export funktioniert gut, wenn ich etwas mit 283 Bildern unterschiedlicher Dauer exportieren, aber wenn ich einen von 803 zu exportieren versuche, bekomme ich den gefürchteten Fehler "Die Operation konnte nicht abgeschlossen werden" (AKA "wir haben keine Ahnung was gerade in die Luft gejagt, weil AVFoundation Fehlerberichte schrecklich sind ").
Ich kannError Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x17ab2050 {Error Domain=NSOSStatusErrorDomain Code=-16364 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-16364)}
nicht:
Wenn ich versuche, den 754. Rahmen (immer der 754. Frame) mit meinem AVAssetWriterInputPixelBufferAdaptor
, appendPixelBuffer:withPresentationTime:
kehrt NO
, die AVAssetWriter
des Status dieser ausgefallen ist und seine Fehler hinzufügen Für das Leben von mir herauszufinden, was dieser zugrunde liegende Fehler (OSStatus
-16364) ist. www.osstatus.com hat keine Ahnung, macerror
sagt, dass keine solche Sache existiert, und this Python-Skript zum Suchen der SDK-Header findet nichts. Es ist auch kein Vier-Zeichen-Code wie einige OSStatus-Fehler (es sei denn, ich habe es versaut, dies zu überprüfen).
Ich habe jede gemeinsame Ursache von "Die Operation kann nicht abgeschlossen werden" Fehler, die ich gefunden habe ausgeschlossen. Es bezieht sich nicht auf Dateisystemberechtigungen oder das Überschreiben, zwei Aufrufe von appendPixelBuffer
haben dieselbe Präsentationszeit.
Es ist keine Erinnerung Sache (Speicherverbrauch bleibt bei 165MB während Video-Export flach), und CPU bleibt in der Nähe von 3%.
Wenn es von Bedeutung ist, verwende ich dieselben 6 CVPixelBuffer
s immer und immer wieder für die 6 Bilder, anstatt jedes Mal neue von UIImage
s zu erstellen. Dies scheint die Performance zu verbessern, und jedes Mal, wenn man sie in neue ändert, scheint sich nichts zu ändern (außer, dass sie stattdessen auf Frame 753 fehlschlägt), aber wer weiß.
Hat jemand eine Idee, was das sein könnte?
vielleicht hilft dir das https://github.com/BradLarson/GPUImage/issues/2135 – azimov
@azimov: Ich benutze kein GPUImage, aber vielleicht bringt mich das Fixieren mit Threading irgendwo hin. Vielen Dank. – Linuxios
Ja, ich habe gesehen, dass es nicht dasselbe ist, aber der Autor zeigt AVAssetWriter in seinen Kommentaren und er erhält denselben Fehlercode wie Sie. – azimov