GNU/Linux >> Znalost Linux >  >> Linux

Spojení více souborů MP3 (bezeztrátové)

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)


Linux
  1. Jak komprimovat více souborů v systému Linux

  2. Dd:Více vstupních souborů?

  3. Spojení více polí v textových souborech na Unixu

  1. Jak rozdělit jeden textový soubor do více souborů *.txt?

  2. Jak gzipovat více souborů do jednoho souboru gz?

  3. Jak mohu upravit více souborů ve VIM?

  1. Přesouvání souborů na Linuxu bez mv

  2. Jak rozdělit jeden soubor do více souborů na základě řádků

  3. Tail více vzdálených souborů