Ich möchte mit FFMPEG mehrere WAV-Dateien zu einer einzigen WAV-Datei verketten.
Ich habe den folgenden Befehl verwendet und er generiert die erforderliche Datei.
Befehl:
ffmpeg -f concat -i mylist.txt -c copy output.wav
Datei :
#mylist.txt
file '1.wav'
file '2.wav'
file '3.wav'
file '4.wav'
Aber wie Sie sehen, besteht das Problem darin, dass ich eine Textdatei erstellen muss, um die Liste der zu verkettenden WAV-Dateien anzugeben.
Ich kann all diese Aufgaben erledigen, aber ich würde einen einzelnen Befehl vorziehen, der so aussieht
ffmpeg -i 1.wav -i 2.wav -i 3.wav -i 4.wav output.wav
oder
ffmpeg -i "concat:1.wav|2.wav|3.wav|4.wav" -c copy output.wav
Ich habe diese beiden einfachen Befehle ausprobiert, aber sie geben nur die Stimme von zurück. 1.wav
Bitte helfen Sie mir, einen einzelnen Befehl zu schreiben (oder die obigen 2 Befehle zu korrigieren), mit dem das gewünschte Ergebnis erzielt wird.
Bitte schlagen Sie keine anderen Media Encoder / Editoren vor, ich möchte nur FFMPEG verwenden, da es bereits installiert ist und an anderen Orten verwendet wird.
quelle
[0:0][1:0][2:0][3:0]
an die Anzahl der Dateien an. Verwenden Sie das genau so, wie es heißt. Das einzige, was Sie ändern sollten, sind die Eingabedateien undn=4
.Too many inputs specified for the "concat" filter.
wenn ich versuche, nur 2 Eingaben mit dem Originalcode zu verarbeiten. Es funktioniert jedoch, wenn ich entferne[2:0][3:0]
... was für mich sinnvoll ist, da in diesem Fall keine Dinge wie Streams2:0
und3:0
...n
.Ich denke, die beste Option ist es, sox zu verwenden, nicht ffmpeg:
Lösung kommt von Wie hänge ich eine Reihe von .wav-Dateien an, während ich die numerische Reihenfolge (nicht mit Nullen aufgefüllt) behalte?
quelle
.wav
,sox
scheint aber nicht zu stützen.mp3
..wav
Das im FFmpeg-Wiki erwähnte Verwenden des
concat
Protokolls ist nicht bei allen Dateitypen möglich. Es funktioniert gut mit den meisten MPEG-Containern und Bitstreams, aber offensichtlich nicht mit WAV-Dateien mit PCM-Audio.Sie müssen nicht unbedingt eine temporäre Datei erstellen und diese verwenden. Mit Bash (oder anderen Shells, die die Prozessersetzung unterstützen ) können Sie alles in einem einzigen Befehl ausführen:
Die Prozessersetzung
<( )
erstellt eine Datei - oder genauer gesagt einen Dateideskriptor - im laufenden Betrieb, dieffmpeg
gelesen werden kann. Diese Datei enthält den Pfad zu jeder.wav
Datei im aktuellen Verzeichnis. Wir müssen ihm das Präfix voranstellen$(pwd)
, um den korrekten Pfad relativ zu Ihrem aktuellen Verzeichnis und nicht relativ zum Dateideskriptor zu erhalten.Natürlich kann der Befehl innerhalb der Ersetzung in etwas anderes geändert werden.
quelle
Unsafe file name
Fehlermeldung erhalten, benötigen Sie zuvor eine-safe 0
Option-i
. ref. stackoverflow.com/q/38996925/297679Eine andere Möglichkeit ist die Verwendung von concat
quelle
Im Cmd.EXE .BAT-Skript von Win8:
Auf diese Weise kümmern Sie sich nicht um die Namen der Quelldateien oder den concat-count-Parameter.
quelle
Sie könnten
shntool
für WAV-Dateien verwenden.quelle