Konversi pustaka trek WMA ke MP3?


28

Saya tahu ada opsi seperti Sound Converter untuk melakukannya satu trek atau direktori pada suatu waktu, tetapi apakah ada alat yang secara rekursif akan merangkak melalui subdirektori direktori dan mengkonversi semua WMA ke MP3?

Saya pada dasarnya ingin melepaskannya pada ~ / Musik saya dan membiarkannya melakukan hal itu tanpa saya secara manual harus memberikannya satu subdirektori pada suatu waktu.


Sebagai catatan, jika ada file WMA yang mengandung DRM, tidak ada aplikasi Linux yang bisa mendekripsi mereka.
Broam

Jawaban:


17

MPlayer kemungkinan sudah diinstal. Pastikan juga Anda lumpuh:

sudo apt-get install mplayer lame

Lalu ada dua cara untuk melakukannya, versi yang mudah dibaca, dan naskah pendek dan kotor untuk melakukannya:

Semua wma harus ada di direktori Anda saat ini. Buat file bernama wmamp3 di direktori home Anda (~ /) yang berisi:

#!/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 untuk membuatnya dieksekusi

sudo cp ~/wmamp3 /usr/bin untuk meletuskannya di tempat yang berguna di jalur Anda

Ketik "wmamp3" untuk menjalankan konversi Anda.


Versi pendek dan kotor (tidak persis sama seperti di atas):

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

Terima kasih, tetapi saya membutuhkan satu yang melewati direktori secara rekursif, karena mereka tersebar melalui banyak subdirektori ~ / Musik.
Mike Crittenden

Anda dapat dengan mudah memperluas skrip untuk melakukan pencarian file secara rekursif - Saya mungkin akan mengulang skrip pertama menggunakan find, mem-pipkan output ke mplayer.
Rory Alsop

Jawaban ini tidak berfungsi untuk saya pada tahun 2013. Namun jawaban ini berfungsi: askubuntu.com/a/55469/36661
MountainX

1
Versi cepat dan kotor masih berfungsi pada tahun 2016 (pada 14,04) jika Anda menggantinya -ao pcm -waveheaderdengan -ao pcm:waveheader.
m00am

1
Solusi skrip yang bagus. Bekerja tanpa modifikasi pada September 2019 di xubuntu 19.04.
Balu

40

Pasang Soundconverter Pasang soundconverter

dan jalankan Soundconverterdari launcher atau terminal

masukkan deskripsi gambar di sini

Konversi default adalah .oggmengubah ini untuk mp3pergi di edit-> preferencesbawah jenis hasil. Formatke MP3 sebagai berikut:

masukkan deskripsi gambar di sini

Klik pada add folder dan kemudian pilih folder musik Anda. Anda dapat memilih folder output pada konfigurasi preferensi di atas sebelum Anda mengklik convert.

Semoga ini bisa dilakukan dengan dua klik :)


2
Ini tentu titik sederhana dan klik. +1 dari saya :-)
Rory Alsop

Masalah dengan solusi ini adalah bahwa SoundConverter melakukan sangat lambat atau hanya membeku sepenuhnya ketika lebih dari beberapa ratus lagu ditambahkan sekaligus, dan perpustakaan saya memiliki sekitar 5k.
Mike Crittenden

5k? wooo itu banyak;) bagaimanapun itu tergantung pada kinerja komputer Anda. mungkin Anda harus memisahkan file-file itu. pribadi saya mengkonversi beberapa ratus lagu tanpa membeku :)
Achu

13

Mplayer dan lumpuh harus diinstal terlebih dahulu:

sudo apt-get install mplayer lame

Kemudian buat skrip ( halaman referensi ) dan jalankan:

#!/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

Sepertinya itu melakukan apa yang Anda inginkan. Ingatlah bahwa Anda mungkin ingin mengutak-atik bendera lumpuh untuk memastikan Anda mendapatkan tingkat kualitas yang diinginkan.


3
Ini masih berfungsi dengan baik di 2013
MountainX

@ David Futhcher, menyebutkan referensi adalah kebiasaan yang baik :-), terima kasih!
AjayKumarBasuthkar

2

Instal Perl Audio Converter (pacpl): sudo apt-get install pacpl

Perintah ini akan mengonversi semua file wma dalam direktori yang diberikan ke file mp3 (membiarkan dokumen asli tetap utuh):

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

Jika Anda merasa berisiko, Anda dapat menambahkan --deleteopsi untuk juga menghapus yang asli:

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


2

Saya tahu ini agak lama tetapi saya memodifikasi skrip yang diperlihatkan oleh David Futcher. Perubahannya adalah:

  • Gunakan /tmpalih-alih folder saat ini untuk file wav sementara (ini memberikan percepatan besar ketika saya menggunakan ini untuk mengkonversi file pada USB stick).

  • Hapus file wma setelah mereka (semoga berhasil) dikonversi.

Ini dia:

#!/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

dua baris terakhir dapat digabung :-) -o "${wma_file}".mp3 && rm "${wma_file}" "${tmp_file}" ini akan meningkatkan kecepatan pemrosesan karena eksekutif lain untuk rm tidak ada.
AjayKumarBasuthkar

1

Bagi mereka yang mencari versi GUI yang dapat memilih tipe file tertentu: alat KDE soundKonverter https://github.com/HessiJames/soundkonverter menanyakan tipe file mana yang harus ditambahkan ke antrian percakapan.

Solusi terbaik untuk koleksi Audiobook besar saya yang berisi file mp3 / ogg / wma.


1

Berikut ini adalah skrip Marko Haapala edisi saya, menggunakan ffmpeg:

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

Saya lebih suka ffmpeg, karena tidak mengubah laju sampel dan tidak perlu file temp sedang


0

Soundcoverter menunjukkan kesalahan tentang modul Windows Media dan Python 2.7

Avconv bekerja dengan baik: avconv -i ./song.wma song.mp3


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.