Ich habe ein Skript, das FFMPEG verwendet, um viele Dateien zu konvertieren. Wenn ich es stoppe, bleibt die aktuell ausgegebene Datei in einem unvollständigen Zustand.
Gibt es eine Möglichkeit, FFMPEG dazu zu bringen, in eine temporäre Datei zu schreiben (z. B. FILENAME_incomplete), sodass ich abgebrochene Konvertierungen leicht identifizieren kann?
Antwort1
Wenn Sie es manuell abbrechen, ist dies nicht implementiert, da ffmpeg per se kein Fortschrittskonzept hat. Es weiß nicht, dass eine Ausgabe 200 Sekunden lang sein wird, und wenn es nach 100 Sekunden gestoppt wird, war die Verarbeitung daher unvollständig.
Wenn ffmpeg aufgrund eines Fehlers stoppt, ist sein Exitcode > 0. Sie können das also abfangen und die entsprechende Ausgabedatei löschen.
Antwort2
Das Lesen des Fehlercodes ist eine Möglichkeit, allerdings ist dies keine Ausfallsicherheit – beispielsweise wenn das Terminal abgestürzt ist oder so.
Sie können Ihre Ausgabedatei wie folgt benennen: Überprüfen Sie Filename.incomplete.mpeg
dann in der Zeile danach ffmpeg
in Ihrem Skript, ob der Exit-Code ( $?
für bash
Skripte) 0 ist. In diesem Fall wird davon ausgegangen, dass der Vorgang ffmpeg
normal abgeschlossen wurde, und Sie können die Datei in umbenennen Filename.mpeg
.
Mir ist auch aufgefallen, dass die unbeschädigte Ausgabe eine beschädigte Zeitleiste hat. Es gibt wahrscheinlich Möglichkeiten zu überprüfen, ob die Ausgabedatei vollständig ist (mithilfe von ffprobe
maybe).