WMA parçalarının kütüphanesini MP3'lere dönüştür?


28

Her seferinde bir parçayı veya dizini yapmak için Ses Dönüştürücü gibi seçenekler olduğunu biliyorum; ancak bir dizinin alt dizinlerinde tekrarlı olarak tarama yapan ve tüm WMA'ları MP3'lere dönüştüren herhangi bir araç var mı?

Temelde ~ / Müziğimde gevşemesine izin vermek ve her seferinde bir alt dizin vermek zorunda kalmadan benden bir şey yapmasına izin vermek istiyorum.


Not olarak, herhangi bir WMA dosyasında DRM varsa, hiçbir Linux uygulaması şifresini çözemez.
Broam

Yanıtlar:


17

MPlayer zaten yüklü olması muhtemeldir. Ayrıca topallandığınızdan emin olun:

sudo apt-get install mplayer lame

Sonra bunu yapmanın iki yolu vardır, okunması kolay bir sürüm ve bunu yapmak için kısa ve kirli bir komut dosyası:

Tüm wma'lar geçerli dizininizde olmalıdır. İçindeki dizinde (~ /) wmamp3 adlı bir dosya oluşturun:

#!/bin/bash

current_directory=$( pwd )

#remove spaces
for i in *.wma; do mv "$i" `echo $i | tr ' ' '_'`; done

#remove uppercase
for i in *.[Ww][Mm][Aa]; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done

#Rip with Mplayer / encode with LAME
for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -ao pcm:waveheader $i && lame -m s audiodump.wav -o $i; done

#convert file names
for i in *.wma; do mv "$i" "`basename "$i" .wma`.mp3"; done

#cleanup
rm audiodump.wav

chmod +x ~/wmamp3 çalıştırılabilir yapmak

sudo cp ~/wmamp3 /usr/bin yolunda yararlı bir yere çıkarmak için

Dönüşümünüzü çalıştırmak için "wmamp3" yazın.


Kısa ve kirli versiyon (yukarıdaki ile tamamen aynı):

for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -ao pcm:waveheader "$i" && lame -m j -h --vbr-new -b 160 audiodump.wav -o "`basename "$i" .wma`.mp3"; done; rm -f audiodump.wav

Teşekkürler, ama dizinleri tekrarlayanlardan birine ihtiyacım var, çünkü ~ / Music alt dizinlerine yayılmışlar.
Mike Crittenden

Özyinelemeli bir dosya avı yapmak için betiği kolayca genişletebilirsiniz - büyük olasılıkla bu ilk betiği kullanarak çıktıyı mplayer'a aktararak yeniden yazdım.
Rory Alsop,

Bu cevap 2013'te benim için çalışmıyor. Ancak bu cevap çalışıyor: askubuntu.com/a/55469/36661
MountainX

1
Eğer değiştirirseniz hızlı ve acımasız sürümü hala (14.04 üzerine) 2016 yılında çalıştığı -ao pcm -waveheaderile -ao pcm:waveheader.
m00,

1
İyi komut dosyası çözümü. Xubuntu 19.04 tarihinde Eylül 2019'da değişiklik yapılmadan çalışır.
Balu

40

Soundconverter'ı yükleyin Ses dönüştürücüyü takın

ve Soundconverterbaşlatıcıdan veya terminalden çalıştırma

görüntü tanımını buraya girin

Varsayılan dönüşüm .oggiçin bunu değiştirmek mp3için gidiyor edit-> preferencessonuçların türüne altında. FormatMP3 olarak takip:

görüntü tanımını buraya girin

Klasör ekle 'yi tıklayın ve ardından müzik klasörünüzü seçin. Dönüştürmeyi tıklatmadan önce yukarıdaki tercih yapılandırmasında çıktı klasörünü seçebilirsiniz.

Umarım bu iki tıklama ile yapılacak :)


2
Bu kesinlikle basit bir nokta ve tıklama. Benden +1 :-)
Rory Alsop

Bu çözümle ilgili sorun, SoundConverter'ın bir kerede birkaç yüz şarkı eklendiğinde son derece yavaş bir şekilde çalması veya tamamen donması ve kütüphanemde yaklaşık 5k olması.
Mike Crittenden

5k? wooo çok fazla;) yine de bilgisayarınızın performansına bağlı. bu dosyaları ayırmanız gerekebilir. kişisel hiç donmadan birkaç yüz şarkı dönüştürdüm :)
Achu

13

Mplayer ve lame önce kurulmuş olmalı:

sudo apt-get install mplayer lame

Ardından betiği ( referans sayfası ) oluşturun ve uygulayın:

#!/bin/bash
# By Marko Haapala
# converts wma to mp3 recursively. does not delete any static files, so 
# cleanup and renaming is needed afterwards. 
#
# requirements:
# lame    - http://lame.sourceforge.net/download.php
# mplayer - apt-get install mplayer or http://www.mplayerhq.hu/design7/dload.html


current_directory=$(pwd)
wma_files=$(find "${current_directory}" -type f -iname "*.wma")
# Need to change IFS or files with filenames containing spaces will not
# be handled correctly by for loop
IFS=$'\n' 
for wma_file in ${wma_files}; do 
    mplayer -vo null -vc dummy -af resample=44100 \
    -ao pcm -ao pcm:waveheader "${wma_file}" && lame -m s \
    audiodump.wav -o "${wma_file}".mp3
    rm audiodump.wav
done

Tam olarak istediğini yapar gibi görünüyor. İstenen kalite seviyesini elde etmek için topal bayrakları ile oynamak isteyebilirsiniz.


3
Bu hala 2013 yılında iyi çalışıyor
MountainX

@David Futhcher, referanstan bahsetmek hoş bir alışkanlıktır :-), teşekkür ederim!
AjayKumarBasuthkar 10:18

2

Perl Audio Converter'ı (pacpl) takın: sudo apt-get install pacpl

Bu komut, belirli bir dizindeki tüm wma dosyalarını mp3 dosyalarına dönüştürür (orijinalleri değişmeden bırakır):

pacpl -r -to mp3 -only wma <directory name>

Riskli hissediyorsanız --delete, orijinalleri de kaldırma seçeneği ekleyebilirsiniz :

pacpl -r --delete -to mp3 -only wma <directory name>ben


2

Bunun biraz eski olduğunu biliyorum ama David Futcher'ın gösterdiği senaryoyu değiştirdim. Değişiklikler:

  • /tmpGeçici wav dosyası için geçerli klasör yerine kullanın (bu, dosyaları bir USB çubuğuna dönüştürmek için kullandığımda büyük bir hız verdi).

  • WMA dosyalarını (umarım başarıyla) dönüştürüldükten sonra kaldırın.

İşte burada:

#!/bin/bash
# By Marko Haapala
# converts wma to mp3 recursively. does not delete any static files, so
# cleanup and renaming is needed afterwards.
#
# Modified by V10lator
# to delete the wma files and to use /tmp for temporary files
#
# requirements:
# lame    - http://lame.sourceforge.net/download.php
# mplayer - apt-get install mplayer or http://www.mplayerhq.hu/design7/dload.html


current_directory=$(pwd)
tmp_file=$(mktemp -t -u --suffix=.wav)
wma_files=$(find "${current_directory}" -type f -iname "*.wma")
# Need to change IFS or files with filenames containing spaces will not
# be handled correctly by for loop
IFS=$'\n' 
for wma_file in ${wma_files}; do 
    mplayer -vo null -vc dummy -af resample=44100 \
    -ao pcm -ao pcm:waveheader -ao pcm:file="${tmp_file}" \
    "${wma_file}" && lame -m s "${tmp_file}" \
    -o "${wma_file}".mp3 && rm "${wma_file}"
    rm "${tmp_file}"
done

Son iki satır birleştirilebilir, -o "${wma_file}".mp3 && rm "${wma_file}" "${tmp_file}" bu rm için başka bir çalıştırıcı olmadığından işlem hızını yavaşça arttırır.
AjayKumarBasuthkar 10:18

1

Belirli dosya türlerini seçebilen bir GUI sürümü arayanlar için: KDE aracı soundKonverter https://github.com/HessiJames/soundkonverter , konuşma sırasına hangi dosya türlerinin eklenmesi gerektiğini soruyor.

Mp3 / ogg / wma dosyaları içeren devasa Audiobook koleksiyonum için en iyi çözüm.


1

İşte ffmpeg kullanarak Marko Haapala senaryosunun baskısı:

current_directory=$(pwd)
wma_files=$(find "${current_directory}" -type f -iname "*.wma")
# Need to change IFS or files with filenames containing spaces will not
# be handled correctly by for loop
# Also, it must be run as root to correctly handle spaces on Ubuntu 16
IFS=$'\n'
for wma_file in ${wma_files}; do
 ffmpeg -i "${wma_file}" -q:a 0 "${wma_file}".mp3
 #uncomment rm below to delete original wma's
 #rm "${wma_file}"
done

Ben ffmpeg'i tercih ediyorum, çünkü örnekleme hızını değiştirmiyor ve ara temp dosyasına ihtiyaç duymuyor


0

Soundcoverter, Windows Media modülü ve Python 2.7 ile ilgili bir hata gösteriyor

Avconv iyi çalıştı: avconv -i ./song.wma song.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.