Birkaç .mp3 dosyasını bir .mp3'te birleştirme


45

O önerildi gibi burada kullanıyorum catbir .mp3 dosyası içine birkaç .mp3 dosyalarını birleştirmek için komut.

Hayal et, şu anki klasördeki .mp3 dosyalarını takip ettim:

001001.mp3 001002.mp3 001003.mp3 001004.mp3 001005.mp3

veya bunun gibi:

096001.mp3 096002.mp3 096003.mp3 096004.mp3

Bu .mp3 dosyalarını orada artan bir sırayla birleştirmeliyim, yani 001001.mp3+001002.mp3+001003.mp3+etc.

Bu .mp3 dosyalarını bir birime eklemek için geçerli klasörde aşağıdaki komutu çalıştırıyorum:

cat *.mp3 > final.mp3

Final .mp3 dosyasını test ettim ve beklediğim buydu, ancak yukarıdaki komutun dosyaları artan bir sırayla seçtiğinden emin olmam gerekiyor .

Yukarıdaki komutun her zaman artan sırada dosyaları birleştirdiğinden emin olabilir miyim?

Teşekkürler efendim !

Yanıtlar:


46

catbu iş için doğru araç değil. MP3 formatı, dosyanın önünde ve sonunda gizlenebilecek her türlü gereksizliğe sahiptir ve bunun çıkarılması gerekir. mp3wrapİstediğin şey bu. Dosyalardaki meta verileri hariç tutar ve sesi bir araya getirir.

sudo apt-get install mp3wrap
mp3wrap output.mp3 *.mp3

Bunu yapmadan önce ls *.mp3, doğru sırada olduklarını kontrol etmek için koşun . İlk başta bu cevabı yazdığımda (altı yıldan uzun bir süre önce!) Joker karakterler açıkça görünmüyordu ama sanırım şimdi yapıyorlar.

Örneğin, numaralandırılmış ancak sıfır dolgulu değillerse {1-11}.mp3sıralanırsa , dosyaları yeniden adlandırmanız gerekebilir 1 10 11 2 3 4 5 6 7 8 9. Bu kolayca düzeltilebilir .


2
Sağ - kedi, mp3 dosyalarının tek bir mp3 dosyası içinde "olduğu gibi" bir dizi oluşturarak "mp3 biçimini değiştirir. Ancak, oynatıcı yazılımı yeterince akıllıysa işe yarayacak gibi görünüyor.

Bu benim için daha iyi çalıştı, çünkü dosya find . -maxdepth 1 -iname '*.mp3' -print0 | sort -z | xargs -0 mp3wrap output.mp3
adındaki boşluklu mp3'leri kullanıyor

@bmaupin Adil bir nokta ama neden sadece Bash'in joker genişlemesini kullanmadığımdan emin değilim. *.mp3yeterli olmalı (ve boşluklarla çalışmalı).
Oli

Demlemek paket yöneticisi mac için kullanılabilir ! $ brew install mp3wrap.
Rubens,

1
Kısaca, *.mp3alfabetik sıralamayı korumak için garanti edilir. Dosyalarınızı adlandırılmışlarsa 09.mp3, 10.mp3, 11.mp3, istediğin muhtemelen bu. Dosyalarınızı adlandırılmışlarsa 9.mp3, 10.mp3, 11.mp3, istediğin bu muhtemelen değil, ama yapabileceğin `ls *.mp3 | sort -n`.
Jo Liss,

26

mp3wrap yeterince iyi bir çözüm gibi görünüyor, ancak ortaya çıkan dosyayı oynattığımda zaman damgası doğru değildi. MP3wrap, mp3'lere daha sonra bölmek istediğinizi bildiğiniz bir dosyaya katılırken en iyi şekilde kullanılır.

Sadece bazı mp3'leri kalıcı olarak bir araya getirmek istedim. Dosyaları birleştirmek için ffmpeg kullanarak sona erdi:

  1. İlk önce, ffmpeg'i kurun.

    • Ubuntu 15.04+

      sudo apt install ffmpeg
    • Ubuntu 14.10 ve altı http://ffmpeg.org/download.html
      adresine gidin , statik yapılardan birini indirin, yeniden açın ve / usr / local / bin dizinine kopyalayın

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

Daha fazla bilgi: https://trac.ffmpeg.org/wiki/Concatenate#protocol
https://superuser.com/a/314245


ffmpegeksik, ancak avconvbunun yerine geçiyor
muru

2
Evet, bir süre avconv kullandım, ama sonra ffmpeg'in sahip olduğu ve avconv'ın sahip olmadığı bazı özelliklere ihtiyacım vardı ve o zamandan beri kullanmadım. Bu günlerde, fconmp zaten bildiğimde avconv'un ihtiyacım olan özelliklere sahip olup olmadığını görmek için zaman kaybı gibi hissediyorum.
bmaupin

Lütfen bu hata raporu tartışmasına katılmaya davet edildiğini hissediyorum .
orschiro

Bunu denedim ve harika çalışmıyor; çalıştırmayı deneyin output.mp3bir sokmak mp3valve Chrome64 + 'da oynatma sorunlarını yaratacak hatalar her türlü göreceksiniz (bkz bugs.chromium.org/p/chromium/issues/detail?id=794782 ve bugs.chromium.org/p/chromium/ konular / detaylar? id = 806601 # c10 )
Nino Škopac

harika bir çözüm. Yine de şarkıları normalleştirmek için?
ar2015

8

Daha önce önerildiği gibi mp3wrap, iyi bir çözümdür. Yine de her zaman işe yaramayabilir. Bildiğim kadarıyla mp3wrap, tüm girdi dosyalarının VBR-CBR, bitrate vb. Gibi aynı özelliklere sahip olduğunu varsayar. Bu varsayım karşılanmazsa, başarısız olması muhtemeldir. Bu durumda, tek çözüm tüm mp3 dosyalarının kodunu ham bir formatta kodlamak, benzer .wavbir programla birleştirmek ve hepsini mp3'e soxyeniden kodlayarak bitirmek olacaktır.


MP3 dosyalarını yeniden kodlamanın ("kod dönüştürme" olarak da bilinir) kalite kaybına neden olacağını unutmayın. Bunu tavsiye etmem.
Martin Tournoij

5

Tek karakterlere dayalı alfabetik bir sıralama yapar. Bu, "01" in "1" den önce gelmesidir, çünkü naught değerinden daha düşük bir değere sahiptir.

İşte bir örnek. 1, 2, 3, 04, 05 ve 06 adında dosyaları olan bir dizin var. Kendi dosya adlarını içeren metin dosyalarıdır:

test$ cat *
04
05
06
1
2
3

Yani, evet olacak; ancak tüm dosyalarınızın düzgün bir şekilde 'doldurulduğundan' emin olmanız gerekir.

Bu şık bash betiği, dosya adlarını görsel olarak karşılaştırmanıza izin verir ve bu sayede hataları kolayca görebilirsiniz:

for f in $(ls); do printf "%05s\n" "$f"; done

Çıkışı şöyle görünecek:

   04
   05
   06
    1
    2
    3

Değilse, dosya adlarını doldurmanız gerekir: StackOverflow'ta dosya adlarını doldurmak için Bash komut dosyası nasıl yapılacağını açıklar.


Düzenle. Oli'nin cevabına oy verin, çok daha iyi. : P
benimkini bırakacağım çünkü bir şeyler ekliyor, ama onun çözümünü kullanmalısın,

mp3wrap output.mp3 `ls -1 *.mp3 | sort`

Unutmayın sortonlar uzunluğunda eşit değilse hala sıralama yukarıda açıklanan şekilde işler, yine ped dosya isimlerinin gerekecektir olacak.


4

Çoğu insan öneride bulunuyor mp3wrap, ancak bunun dezavantajı var: Oluşturulan dosya bazı uzunluklarda tam uzunluğunu bildirmiyor ve o zaman bu noktadan sonra arama yapamıyorsunuz.

mp3catAnladığım kadarıyla işi hızlı ve iyi yapıyor. Http://mulholland.xyz/dev/mp3cat/ adresinden indirilebilir ve aşağıdaki şekilde kullanılabilir:

mp3cat file1.mp3 file2.mp3 file3.mp3

başka bir olasılık olacaktır sox

sudo apt-get install sox libsox-fmt-mp3
sox file1.mp3 file2.mp3 target.mp3

fakat çok yavaş görünüyor (belki de sesin kodunu çözer ve yeniden kodlar?)


3

Çevrimiçi hizmet audio- joiner’ın çok iyi çalıştığını ve doğru zaman damgasını (mp3wrap’ın aksine) koruduğunu gördüm.



0

Bmaupin'in yorumlarını seviyorum , ancak şunu kullanarak doğal tür (sürüm) sayıları üretebilir sort -V:

find . -maxdepth 1 -iname '*.mp3' -print0 | sort -Vz | xargs -0 mp3wrap ../tmp.mp3

' " () [] {}dosya adındaki gibi özel karakterlerle uğraşmanıza gerek kalmaz .

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.