Ich kann mit dem folgenden Befehl mehrere Dateien erfolgreich verbinden:
ffmpeg -f concat -i input.txt -codec copy output.mp4
Das einzige Problem bei diesem Befehl ist, dass Sie die Dateipfade aus der Textdatei input.txt mit folgendem Inhalt lesen müssen :
file 'C:\Users\fabio\Downloads\Super\Sharks\01.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\02.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\03.mp4'
Gibt es eine Möglichkeit, dasselbe Ziel zu erreichen, ohne die Dateipfade aus einer Datei lesen zu müssen? Ich habe folgendes ohne Glück versucht:
ffmpeg -f concat -i file "C:\a\b\01.mp4" file "C:\a\b\02.mp4" -codec copy output.mp4
ffmpeg -f concat -i "C:\a\b\01.mp4" "C:\a\b\02.mp4" -codec copy output.mp4
Muss ich einen anderen Befehl verwenden?
command-line
ffmpeg
Fabio Delarias
quelle
quelle
Antworten:
Update 2019:
Wie in den Kommentaren erwähnt, enthält Stack Overflow eine ausführliche Beschreibung der verfügbaren Optionen für die Verkettung sowie eine Erläuterung der zu verwendenden Methode in Abhängigkeit von den von Ihnen verwendeten Dateitypen:
Wie verkette ich zwei MP4-Dateien mit FFmpeg?
Original 2016 Antwort:
Sie sollten die concat-Protokollmethode verwenden können, um die Dateien zu kombinieren:
Darüber hinaus wird im FFmpeg-Handbuch eine Methode speziell für MP4-Dateien beschrieben, um diese verlustfrei zu verketten. Sie müssen jedoch temporäre Dateien (oder Named Pipes) erstellen:
quelle
output.mp4
.Sie können eine Datei durch eine Liste ersetzen, indem Sie eine Liste ausgeben
stdout
und die Listestdin
von ffmpeg lesen :quelle
Nein, es scheint keine Möglichkeit zu geben, den ffmpeg concat-Demuxer ohne Hack auf einer einzigen Befehlszeile zu verwenden. Sie müssen die Eingabetextdatei mit der Liste der Dateien erstellen. Ich fand das seltsam, vielleicht fügt jemand dies zu einem späteren Zeitpunkt zu FFMpeg hinzu.
Die akzeptierte Antwort auf diese Frage verwendet das Concat-Protokoll, nicht den Concat-Demuxer, den das OP gestellt hat.
quelle
Sie können dies immer noch in einem Skript tun, ohne den Befehl zu ändern. So etwas wie:
Das $$ wird auf die PID der Shell erweitert, in der der Befehl ausgeführt wird, sodass der Dateiname bei jeder Ausführung anders ist. Wenn Sie möchten, können Sie $$. txt verwenden. Oder etwas anderes...
Sie können hier auch Dateien verwenden, um der Datei eine Reihe von Daten hinzuzufügen:
bash Die Variablensubstitution funktioniert, sodass Sie den Inhalt der Datei programmgesteuert bestimmen können. Eine Korrektur ist nicht erforderlich. Ich binde solche Sachen die ganze Zeit in for-Schleifen ein. Schließlich funktioniert die Umleitung wie oben beschrieben.> $$. Tmp schneidet ab und schreibt dann, >> $$. Tmp hängt an.
quelle