Sie können dies programmgesteuert mit dem concat-Demuxer von ffmpeg tun.
Erstellen Sie zuerst eine Datei mit dem Namen "inputs.txt" mit Zeilen wie "
".file '/path/to/input1.mp3'
file '/path/to/input2.mp3'
file '/path/to/input3.mp3'
...etc. Führen Sie dann den folgenden ffmpeg-Befehl aus:
ffmpeg -f concat -i inputs.txt -c copy output.mp3
Es ist möglich, input.txt einfach mit einer bash for zu generieren -Schleife (dies kann wahrscheinlich auch mit einer Windows-Batch-For-Schleife durchgeführt werden), vorausgesetzt, Sie möchten die Dateien in alphabetischer Reihenfolge zusammenführen. Dies wird jedem entsprechen *.mp3 im Arbeitsverzeichnis, kann aber leicht geändert werden:
for f in ./*.mp3; do echo "file '$f'" >> inputs.txt; done
## Alternatively
printf "file '%s'\n" ./*.mp3 >> inputs.txt
Es ist auch möglich, das Ganze in einer Zeile zu erledigen, wodurch die Erstellung einer Zwischenlistendatei mit Prozesssubstitution vermieden wird:
ffmpeg -f concat -i <(printf "file '%s'\n" ./*.mp3) -c copy output.mp3
Verwenden Sie ffmpeg oder ein ähnliches Tool, um alle Ihre MP3s in ein einheitliches Format zu konvertieren, z. B.
ffmpeg -i originalA.mp3 -f mp3 -ab 128kb -ar 44100 -ac 2 intermediateA.mp3
ffmpeg -i originalB.mp3 -f mp3 -ab 128kb -ar 44100 -ac 2 intermediateB.mp3
Verketten Sie dann zur Laufzeit Ihre Dateien:
cat intermediateA.mp3 intermediateB.mp3 > output.mp3
Führen Sie sie schließlich durch das Tool MP3Val, um Stream-Fehler zu beheben, ohne eine vollständige Neucodierung zu erzwingen:
mp3val output.mp3 -f -nb
(Quelle)