Büyük bir ALAC kitaplığını MP3'e dönüştürmenin en etkili yolu


5

Ana müzik kütüphanem olarak kullandığım büyük bir CD kütüphanem var. Bu kütüphanenin bir kopyasını taşınabilir aygıtlar için vbr mp3'e dönüştürmek isterim, ancak bunu dizüstü bilgisayarımda yapmak istemiyorum, çünkü yaklaşık 650 Gb müzik var ve dizüstü bilgisayarımı oturarak bırakmak için çok seyahat ediyorum Bu süre boyunca kütüphanemin tamamını dönüştürmem gerekecekti. Arkadaşımın bir miktar sunucu alanı var (Debian Squeeze kullanıyor) kitaplığımı dönüştürmek için bana bir veya iki haftalığına borç vermeye hazır. Bu konuda gitmek için en iyi yardımcı program veya yol ne olurdu. Tek şarkılar veya tek albümler için sadece şöyle bir şey kullandım

#!/bin/sh
for file in "$@" ; do
name=`echo "$file" | sed -e "s/.mp4$//g"`
ffmpeg -i "$file" -ac 2 -f wav - | lame --preset standard - "$name.mp3"
done

Bunu yapmanın çok daha etkili bir yolu olduğundan eminim. Müziğim şu anda "Sanatçı - Albümler - Parçalar" şeklinde düzenlenmiş ve çıktının bunu yansıtmasını istiyorum.


Sunucuda kaç tane CPU / çekirdek var? (LAME, yalnızca tek iş parçacıklı kodlamayı destekler, ancak dört çekirdeklide aynı anda dört şarkıyı kodlayabilirsiniz.)
Grawity

Kodlama için sunucuda 4 CPU çekirdeğim var.
Leda

Yanıtlar:


4

Aşağıdaki örneklerde ~/Music/kaynak dizin olarak kabul edilmiştir.


Bir convert.shkomut dosyası oluşturun :

$ cat > convert
#!/bin/bash
input=$1
output=${input#.*}.mp3
ffmpeg -i "$input" -ac 2 -f wav - | lame -V 2 - "$output"
[Ctrl-D]
$ chmod +x convert
  • Çıktılar için farklı bir konumun kullanılmasını istiyorsanız, önce şunu ekleyin ffmpeg:

    output=~/Converted/${output#~/Music/}
    mkdir -p "${output%/*}"
    

Kullanarak dönüştürme parallelgelen moreutils :

$ find ~/Music/ -type f -name '*.mp4' -print0 | xargs -0 parallel ./convert --

parallelFarklı bir sözdizimi kullanan GNU ile karıştırılmaması için :

$ find ~/Music/ -type f -name '*.mp4' | parallel ./convert

2

GNU Parallel ile senaryoya bile ihtiyacınız yok:

find ~/Music/ -type f -name '*.mp4' | parallel ffmpeg -i {} -ac 2 -f wav - \| lame -V 2 - {.}.mp3

Aynı şey, topal kullanmadan da yapılabilir, ffmpeg sürümünüzün libmp3lame etkin olarak derlendiğini varsayalım (çoğu sürüm vardır):

find ~/Music/ -type f -name '*.mp4' | parallel ffmpeg -i {} -c:a libmp3lame -q:a 2 {.}.mp3

Ayrıca büyük -iname/ -nameküçük harf duyarsız eşleşmeleri elde etmek için find komutunun yerine de kullanabilirsiniz (böylece tüm * .mp4 ve * .MP4 ve tüm vaka çeşitlerini alacaktır). Ayrıca, -ac 2ikinci versiyonda kesinlikle gerekli değildir; MP3 zaten en fazla iki kanalı destekleyebilir, bu nedenle ffmpeg gerektiğinde sesi otomatik olarak iki kanala dönüştürür;

Bkz bu ffmpeg wiki sayfasını kodlayan MP3 ilgili bazı temel bilgiler ve için bu hydrogenaudio kılavuzda daha derinlemesine bilgi için bkz.

Şurabileceğiniz başka makineler varsa (örneğin, dizüstü bilgisayarınız geceleri kullanılabilir) GNU Parallel de bu işlemcileri kullanabilir. --Trc (dosyaları aktarmak için) ve --retries (dizüstü bilgisayarların gün boyu uzak durmasıyla ilgili) örneklerine bakın. Http://www.gnu.org/software/parallel/man.html#example__using_remote_computers adresine bakın.

Daha fazla bilgi edinmek için tanıtım videolarını izleyin: http://www.youtube.com/watch?v=OpaiGYxkSuQ

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.