Birçok mp3 dosyasına nasıl katılır / birleştirilir?


59

Pek çok mp3 dosyasına nasıl katılacağınızı / birleştireceğinizi Google'da araştırarak, sadece catonları bir araya getirmem gerektiğini önerir .

Bu, "işe yarayabilir", ancak açıkça görmenin doğru yolu değil, çünkü her başlık ve IDv3 etiketi kümesi de bir araya getirilecek.

Birçok mp3'e katılmak / birleştirmek için yazılmış bir Linux programı var mı?

Mplayer / mencoder / ffmpeg yapabilir mi?

Yanıtlar:


79

Bu, iki mp3 dosyasını birleştirecek ve sonuçta ortaya çıkan meta veriler ilk dosyanınki olacak:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3

Bunun nedeni, ffmpeg için tüm "concat:" bölümünün tek bir "giriş dosyası" olmasıdır ve meta verileri ilk birleştirilmiş dosyada olacaktır. Bunun yerine ikinci dosyadan meta veri kullanmak istiyorsanız, onu sahte bir giriş dosyası olarak eklemeniz ve meta verilerini çıktınınkiyle eşlemeniz gerekir:

ffmpeg -i "concat:file1.mp3|file2.mp3" -i file2.mp3 -acodec copy test.mp3 -map_metadata 0:1

Meta verilerinizi iki meta verilerden oluşturmak istiyorsanız, el ile yapmanız gerekir. Bir dosyanın meta verilerini

ffmpeg -i file1.mp3 -f ffmetadata file1.metadata

Hem meta verileri terk ettikten hem de yeni meta veriler oluşturduktan sonra, çıktı dosyasına ekleyebilir -metadatave -map_metadatanegatif bir giriş dosya numarasından bir eşleme ayarlayarak meta veri kopyalamayı devre dışı bırakabilirsiniz . Bu bir ad değeri belirler ve başka bir meta veri içermez:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy -metadata "title=Some Song" test.mp3 -map_metadata 0:-1

Bilginize, bu belirli bir ffmpeg sürümünü gerektirir. O dosya bulunamadı concat diyorsa ... tekrar yükseltme ve çalıştırmayı deneyin
Sameer

Gentoo'da ffmpeg 0.10.4'te gayet iyi çalışıyor. Ne kullanıyorsun? Komutu sadece yanlış yazmadığına emin misin?
Ambroz Bizjak

1
Sadece başkaları için birkaç şeyi açıklığa kavuşturmak istedim: -acodecses copykodeğinin kullanılacağı ve yalnızca mutasyona uğramak ve karıştırmak anlamına geleceği, ancak kodlama / kod çözmeyeceği anlamına gelir (yani çok hızlı ve kalite kaybı olmaz)
Housemd

1
Birden fazla dosyayı sürükleyip bırakabileceğim (örneğin, sıralı olarak kaydedilen kayıtlar için kronolojik olarak sıralanan ve belki de düzenlenen bazı dosyalar) düzenlenen bir GUI programı olsaydı harika olurdu.
James Ray,

1
Bu iyi bir cevap, ancak hemen hemen her durumda, sonuçta ortaya çıkan MP3 dosyası, dosyaların birleştirildiği yer arasında kısa (alt saniyelik) bir boşluk bırakıyor. Yani, kesintisiz bir çalma albümü / set / her neyse, MP3 parçalarını birleştirmeye çalışıyorsanız, bu tam olarak işe yaramaz.
Kertenkele

13

Mp3Wrap - Dosya adlarını veya ID3 bilgilerini kaybetmeden ve yeniden kodlama yapmadan , birden fazla MP3 dosyasını tek, çalınabilir bir MP3 içine silen komut satırı yardımcı programı. Ayrıca çalma listeleri, bilgi dosyaları ve MP3 içindeki kapak görüntüleri gibi ses olmayan verilerin arşivlenmesini de destekler. Bu dosyalar daha sonra açılabilir (mp3splt, örneğin kullanılarak); sıradan MP3 kod çözücüleri tüm ses akışını tek bir uzun parça olarak çalabilir.


1
Bu öneri için teşekkürler .. 100'den fazla mp3'ü birleştirdiğimden ve orijinallere geri dönme seçeneği istediğim için ffmpeg'den çok daha hafif / daha basit bir çözüm.
joshbaptiste

Bu artık özellik işe yaramaz - birkaç dosyayı birleştirmeyi deneyin ve çıktı dosyasını inceleyin mp3val- eşitleme hatalarını bildirir. Bu, Chrome 64+ sürümündeki ilk parçadan sonra çalmayacağı anlamına gelir (bkz. Bugs.chromium.org/p/chromium/issues/detail?id=794782 ve bugs.chromium.org/p/chromium/issues/detail?id = 806601 # c10 )
Housemd

Windows'da işe görünmüyor. Meta veri korunmadı.
Gruber

9

Bu, MP3 içeren bir klasörü tek bir MP3 dosyasına birleştirir:

1) Birleştirilecek MP3 dosyalarının bir listesini kaydedin, örneğin,

$ cat mylist.txt
file '/tmp/01.mp3'
file '/tmp/02.mp3'
file '/tmp/03.mp3'
file '/tmp/04.mp3'
file '/tmp/05.mp3'
file '/tmp/06.mp3'
file '/tmp/07.mp3'

2) aşağıdaki komutu (Run -safe 0olan mylist.txt yerine göreli yolları kullanıyorsa gerekli değildir ):

$ ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp3

3

Geçerli dizinin tüm mp3 dosyalarını birleştirmek istiyorsanız:

function join_by { local IFS="$1"; shift; echo "$*"; }
files=(*.mp3)
ffmpeg -i "concat:`join_by "|" $files`" -acodec copy output.mp3

0

Komut dosyasına ihtiyacınız varsa, muhtemelen ffmpeg çözümünü kullanmaktan daha iyi olursunuz. Ancak, böyle şeyler yapmak için yalnızca bir uygulamaya ihtiyacınız varsa, Audacity'yi deneyebilirsiniz . Açık kaynak ve çapraz platform. MP3'lere katılmak için kullanmadım, ancak bir mp3'ün bölümlerini kesip sonunda bitirmek için kullandım. Bahse girerim mp3'lere katılabilirsiniz ve aralarında birbirleriyle çapraz geçiş yapabilirsiniz.


4
Audacity, bildiğim kadarıyla, ham ses verileri üzerinde çalışıyor ve onunla bir araya gelen mp3'lerin kodlanması kod çözme nedeniyle bir bozulmaya neden olacak.
Ambroz Bizjak

0

zsh:

audio-join() ffmpeg -i "concat:${(j:|:)@[2,-1]}" -acodec copy $1

audio-join output.mp3 *.mp3

Açıklamaları içeren cevaplar bekliyoruz. (Bu sayfadaki cevapların hepsi iyi bir örnek değil.)
Scott

0

Miles Wolbe'nin cevabına dayanarak, işte benim için işe yarayan bir tek gömlek:

ls *.mp3 | \
    sed -e "s/\(.*\)/file '\1'/" | \
    ffmpeg -protocol_whitelist 'file,pipe' -f concat -i - -c copy output.mp3
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.