Dołącz do wielu plików MP3 (bezstratnie)

6

Jak połączyć wiele plików MP3 w jeden? „cat” i „mp3wrap” nie są dobre, ponieważ produkują niestandardowe pliki MP3. Wiem, że mogę użyć audacity, ale kiedy masz 1000 plików MP3, aby połączyć się w jeden, trwa to zbyt długo.

Jakieś sugestie?

oshirowanen
źródło
Pamiętaj, że MP3 nie jest formatem bezstratnym. Łączenie dźwięku wymaga ich ponownego kodowania. (Chociaż nie jestem tego w 100% pewien. Jakiś czas temu ktoś wymyślił, jak wykonywać pewne manipulacje na obrazach jpg, innym stratnym formacie, bez konieczności ich ponownego kodowania. Chociaż format jest stratny, transformacje były bezstratne. )
Ouroborus,

Odpowiedzi:

6

Użyj ffmpeg lub podobnego narzędzia, aby przekonwertować wszystkie pliki MP3 na spójny format, np

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

Następnie w środowisku wykonawczym połącz pliki razem:

cat intermediateA.mp3 intermediateB.mp3 > output.mp3

Na koniec uruchom je za pomocą narzędzia MP3Val, aby naprawić błędy strumienia bez wymuszania pełnego ponownego kodowania:

mp3val output.mp3 -f -nb
(źródło)

Nifle
źródło
1
Więc nie można tego zrobić bezstratnie?
oshirowanen
@oshirowanen może przy użyciu VBR jest to możliwe, próbowałeś tego?
Tobias Kienzler
Ciekawe, proste catting 2 pliki mp3 (wyodrębniony film 2CD audio track) automagicznie działa, MPlayer pokazuje prawidłową całkowity czas trwania
mykhal
1
@mykhal Ale Amarok i Clementine nie; pokazują długość oryginalnego pierwszego pliku.
Pan Lister
11

Można to zrobić programowo z ffmpeg „s concat demuxera .

Najpierw utwórz plik o nazwie inputs.txt z liniami podobnymi

file '/path/to/input1.mp3'
file '/path/to/input2.mp3'
file '/path/to/input3.mp3'

...itp. Następnie uruchom następującą komendę ffmpeg:

ffmpeg -f concat -i inputs.txt -c copy output.mp3

Możliwe jest łatwe generowanie inputs.txt za pomocą bash dla pętli (prawdopodobnie można to zrobić również w pakiecie Windows dla pętli dla pętli), zakładając, że chcesz scalić pliki w kolejności alfabetycznej. Będzie pasować do każdego * .mp3 w katalogu roboczym, ale można go łatwo zmodyfikować:

for f in ./*.mp3; do echo "file '$f'" >> inputs.txt; done
##  Alternatively
printf "file '%s'\n" ./*.mp3 >> inputs.txt

Możliwe jest również wykonanie całej czynności w jednym wierszu, unikając tworzenia pliku listy pośredniej z podstawieniem procesu :

ffmpeg -f concat -i <(printf "file '%s'\n" ./*.mp3) -c copy output.mp3
zła
źródło
Przykład zastąpienia procesu tutaj tworzy listę danych wejściowych, ffmpegktóra nie lubi; dla mnie to brzmi [concat @ 0x10201a200] Impossible to open '/dev/fd/./01 Track.mp3'. Naprawiłem to, czyniąc ścieżkę do plików absolutną:ffmpeg -f concat -i <(printf "file '/path/to/files/%s'\n" *.mp3) -c copy output.mp3
Neil C. Obremski
+1 Jednakże, zgodnie z tą odpowiedzią , możesz określić pliki w miejscu "concat:file1.mp3|file2.mp3"zamiast inputs.txt, a następnie -f concatjest niepotrzebne.
Sparhawk
1

Freemake Audio Converter jest świetny:

http://www.freemake.com/free_audio_converter/

Konwertuje i / lub łączy pliki audio.

Po pobraniu i zainstalowaniu Freemake (uważaj, aby nie zainstalować Ad-Aware Web Companion, TuneUp Utilities, Opera lub ustawić Yahoo! jako stronę główną), uruchom program. Kliknij przycisk + Audio w lewym górnym rogu okna i wybierz pliki, które chcesz scalić / przekonwertować.

Kliknij przycisk „Przełącz” Dołącz pliki w prawym górnym rogu okna.

Wybierz żądany typ dźwięku (prawdopodobnie FLAC dla bezstratnego)

Umożliwi to dostosowanie ustawień audio i folderu wyjściowego. Gdy będziesz gotowy, kliknij przycisk Konwertuj.

Clefspeare13
źródło
0

Goldwave ma pewne możliwości przetwarzania wsadowego, chociaż jest oprogramowaniem shareware, a nie freeware.

Force Flow
źródło
0

Możesz użyć darmowego mp3cat :

mp3cat indir - > outfile.mp3
niutech
źródło
To obecnie nie działa, chyba że użyłeś mp3cat do nagrania we właściwym formacie: tomclegg.ca/mp3cat
Louis