Ich kodiere eine Videodatei mithilfe von ffmpeg wie folgt.
$ ffmpeg -i input.avi -pass 1 -an output.mp4
$ ffmpeg -i input.avi -pass 2 -ab 128k -y output.mp4
Ich tippe also immer zweimal. Gibt es eine Möglichkeit, ein Video in zwei Durchgängen auf einmal zu kodieren?
Ich ändere häufig Optionen und natürlich sind die Eingabe- und Ausgabedateinamen jedes Mal anders.
Antwort1
Anstatt diese als zwei separate Befehle auszuführen, können Sie sie wie folgt in einer Befehlszeile ausführen:
$ ffmpeg -i input.avi -pass 1 -an output.mp4 && \
ffmpeg -i input.avi -pass 2 -ab 128k -y output.mp4
Der Unterschied besteht in der &&
Notation, die den zweiten Befehl (den 2. Durchgang) nur ausführt, wenn der erste Befehl erfolgreich war. Es handelt sich zwar immer noch um zwei separate Vorgänge, aber Sie können nun eine Befehlszeile ausführen, anstatt der beiden, die Sie vorher ausführen mussten.
Dies hat außerdem den Vorteil, dass der zweite Durchgang unmittelbar nach Abschluss des ersten Durchgangs ausgeführt wird, während Sie bei Ihrer Methode im Wesentlichen warten müssten, bis der erste Durchgang beendet ist, bevor Sie den zweiten starten können.
Antwort2
Ich verwende Mencoder, bin mir aber sicher, dass mit ffmpeg/avconv und einem FIFO-Gerät etwas Ähnliches möglich wäre:
$ mkfifo passlog
$ mencoder infile.flv -passlogfile passlog ........... pass=1 &
$ mencoder infile.flv -passlogfile passlog ........... pass=2