Ich nehme jeden Tag ein paar Stunden Videomaterial auf, das ich für die Codierung in die Warteschlange gestellt habe ffmpeg
. Ich verwende die veryslow
Voreinstellung mit x265
, so dass das Kodieren einer einzelnen Stunde Video bis zu 20 Stunden oder länger dauern kann.
Da mein Computer Tag und Nacht arbeitet, frage ich mich, ob ffmpeg
es eine Möglichkeit gibt, die Codierung anzuhalten und fortzusetzen. Ich verwende Terminal
für OS X.
Wenn ja, kann ich die Codierung auch nach dem Herunterfahren des Terminals und dem Neustart des Computers fortsetzen? Ich denke, die Terminal-Sitzung wird wiederhergestellt, wenn Sie sich erneut in OS X anmelden, zumindest der Terminal-Verlauf.
ffmpeg
mit einem Fehler (decode_band_types: Input buffer exhausted before END element found
oderInvalid NAL unit size
undError writing trailer
/Protocol error
). Vielleicht hängt es mit dem Zeitsprung zusammen, ich weiß es nicht.Zum 30. September 2015 schien dies nicht möglich zu sein . Ich würde vorschlagen, die Quelldatei zu segmentieren, die Segmente zu codieren und dann die resultierenden Dateien zusammenzufügen.
Dies ist keine echte Pausen- / Wiederaufnahmefunktion, aber die schrittweise Unterteilung ermöglicht Ihnen eine Unterbrechung der Codierung.
Eine grobe Übersicht über die Befehle, die ausgegeben werden sollen:
Zerlegen Sie die Datei in Teile
Dies sollte file000.mp4, file001.mp4 und so weiter erstellen. Aufgrund der Funktionsweise des Segmentierers - es werden nur I-Frames geschnitten - sind diese Dateien nicht genau
n
Sekunden lang und der Videoteil wird möglicherweise nicht richtig wiedergegeben, aber die Daten sind alle da und Sie können jeden der Teile konvertieren, zSetzen Sie die codierten Teile wieder zusammen
Erstellen Sie eine Textdatei und geben Sie den Namen jeder so gerenderten Datei ein
Und Renn
quelle
Wenn Sie unter Windows die Taste "Pause / Break" (die Taste ganz oben rechts) drücken, wird die Wiedergabe angehalten. Enter wird fortgesetzt.
Wenn es nicht funktioniert, klicken Sie auf das Eingabeaufforderungsfenster, um es zu aktivieren.
quelle
Ich empfehle, anstatt zu pausieren, geben Sie dem Codierungsprozess die niedrigste Systempriorität (auch bekannt als " renice "), damit Sie bequem täglich arbeiten können und die Codierung im Hintergrund mit den nicht verwendeten Systemressourcen erfolgt. So erfolgt Ihre Codierung rund um die Uhr ohne Unterbrechungen, ohne dass es zu Konflikten mit der Tagesarbeit kommt
Da AFAIK OSX nicht über den Befehl pidof verfügt, müssen Sie die PID ( ffmpeg process number ) kennen.
dann können Sie den Vorgang wiederholen, um den Hintergrund mit freizugeben
Bei Bedarf können Sie den Vorgang auch auf eine aggressivere Vordergrundpriorität umstellen
quelle
Das Suspendieren des Threads funktioniert auch unter Windows, nicht mit ctrl+ Z, aber im Ressourcenmanager können Sie es auch dort fortsetzen.
quelle
(Dies für Linux)
Wie Sie wahrscheinlich alle wissen, wird die Aufnahmedatei durch Drücken von 'q' beendet.
ffplay hat die 'p'-Möglichkeit. Warum hat ffmpeg nicht dasselbe? Vielleicht, weil es zu einer Desynchronisation zwischen Video und Audio kommen kann? ...
Ich habe gerade ffmpeg-encode zu x264-aac-mkv mit crf (23) und immer mit den gleichen Videobedingungen, 'quit' (q) die Aufnahmen und füge alle Segmente in einem bestimmten Verzeichnis, in dem sich dieses Skript befindet, zu einer Datei zusammen im Streamcopy-Modus mit diesem Bash-Skript:
Danach überprüfe ich das resultierende zusammengeführte Video und füge es in ein anderes Verzeichnis ein. Die Segmente werden aus dem Zusammenführungsverzeichnis entfernt.
Aber ein stressfreier "Pause & Resume" -Button wäre in der Tat willkommen;)
quelle
Dies ist nur eine Idee, aber wenn Sie etwas Budget haben, ist es eine gute Idee, entweder den Prozessor (auf Intel der 8. Generation) oder sogar die Grafikkarte (auf NVIDIA GTX 1050 oder höher) zu aktualisieren, damit Sie kodieren können h.265 / HEVC mit Hardwarebeschleunigung statt CPU-intensiv
x265
. Ihre Videokodierung ist in weniger als 20 Stunden abgeschlossen, wodurch Sie auch Stromkosten sparen.quelle