Můžete to udělat programově pomocí demuxeru concat ffmpeg.
Nejprve vytvořte soubor s názvem inputs.txt s řádky jako
file '/path/to/input1.mp3'
file '/path/to/input2.mp3'
file '/path/to/input3.mp3'
...atd. Poté spusťte následující příkaz ffmpeg:
ffmpeg -f concat -i inputs.txt -c copy output.mp3
Je možné snadno vygenerovat inputs.txt pomocí bash for smyčka (to lze pravděpodobně provést také pomocí dávkové smyčky Windows), za předpokladu, že chcete sloučit soubory v abecedním pořadí. Toto bude odpovídat všem *.mp3 v pracovním adresáři, ale lze jej snadno upravit:
for f in ./*.mp3; do echo "file '$f'" >> inputs.txt; done
## Alternatively
printf "file '%s'\n" ./*.mp3 >> inputs.txt
Je také možné provést celou věc na jednom řádku, aniž byste se vyhnuli vytváření mezilehlého souboru seznamu se substitucí procesu:
ffmpeg -f concat -i <(printf "file '%s'\n" ./*.mp3) -c copy output.mp3
Pomocí ffmpeg nebo podobného nástroje převeďte všechny své MP3 do konzistentního formátu, např.
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
Potom za běhu spojte soubory dohromady:
cat intermediateA.mp3 intermediateB.mp3 > output.mp3
Nakonec je spusťte pomocí nástroje MP3Val, abyste opravili všechny chyby streamu bez vynucení úplného překódování:
mp3val output.mp3 -f -nb
(zdroj)