Konwertuj bibliotekę utworów WMA na MP3?


28

Wiem, że istnieją opcje, takie jak konwerter dźwięku, aby zrobić je jedną ścieżkę lub katalog na raz, ale czy są jakieś narzędzia, które będą rekurencyjnie przeszukiwać podkatalogi katalogu i konwertować wszystkie pliki WMA na MP3?

Zasadniczo chciałbym pozwolić, aby to luźno na mojej ~ / Music i pozwoliło mu działać bez konieczności ręcznego nadawania mu jednego podkatalogu na raz.


Uwaga: jeśli jakieś pliki WMA mają DRM, żadna aplikacja Linux nie będzie w stanie ich odszyfrować.
Broam

Odpowiedzi:


17

MPlayer prawdopodobnie zostanie już zainstalowany. Upewnij się także, że masz słabe:

sudo apt-get install mplayer lame

Są dwa sposoby na zrobienie tego: łatwa do odczytania wersja oraz krótki i brudny skrypt:

Wszystkie wma powinny znajdować się w twoim bieżącym katalogu. Utwórz plik o nazwie wmamp3 w swoim katalogu domowym (~ /) zawierający:

#!/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 aby był wykonywalny

sudo cp ~/wmamp3 /usr/bin wskoczyć w przydatne miejsce na twojej ścieżce

Wpisz „wmamp3”, aby uruchomić konwersję.


Krótka i brudna wersja (robi dokładnie to samo co powyżej):

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

Dzięki, ale potrzebuję takiego, który przegląda katalogi rekurencyjnie, ponieważ są one rozproszone w wielu podkatalogach ~ / Music.
Mike Crittenden,

Możesz łatwo rozwinąć skrypt, aby wyszukiwać rekurencyjne pliki - prawdopodobnie powtórzę ten pierwszy skrypt za pomocą funkcji find, przesyłając dane wyjściowe do mplayera.
Rory Alsop

Ta odpowiedź nie działa dla mnie w 2013 roku. Jednak ta odpowiedź działa: askubuntu.com/a/55469/36661
MountainX

1
Wersja szybkiego i brzydka nadal działa w 2016 roku (o 14.04), jeśli zastąpi -ao pcm -waveheadersię -ao pcm:waveheader.
m00am

1
Dobre rozwiązanie skryptowe. Działa bez modyfikacji we wrześniu 2019 roku na Xubuntu 19.04.
Balu

40

Zainstaluj Soundconverter Zainstaluj konwerter dźwięku

i uruchom Soundconverterz wyrzutni lub terminala

wprowadź opis zdjęcia tutaj

Domyślną konwersją jest .oggzmiana na mp3przechodzenie do edit-> preferencestypu wyników poniżej. Formatdo MP3 w następujący sposób:

wprowadź opis zdjęcia tutaj

Kliknij dodaj folder, a następnie wybierz folder z muzyką. Możesz wybrać folder wyjściowy w powyższej konfiguracji preferencji przed kliknięciem konwertuj.

Mam nadzieję, że zrobią to dwa kliknięcia :)


2
Jest to z pewnością prosta metoda „wskaż i kliknij”. +1 ode mnie :-)
Rory Alsop

Problem z tym rozwiązaniem polega na tym, że SoundConverter działa wyjątkowo wolno lub po prostu całkowicie się zawiesza, gdy dodaje się więcej niż kilkaset piosenek na raz, a moja biblioteka ma około 5 tysięcy.
Mike Crittenden,

5k? wooo to dużo;) w każdym razie zależy to od wydajności komputera. być może będziesz musiał oddzielić te pliki. osobiście przekonwertowałem kilkaset piosenek bez żadnych zawieszeń :)
Achu

13

Mplayer i lame muszą być najpierw zainstalowane:

sudo apt-get install mplayer lame

Następnie utwórz skrypt ( strona referencyjna ) i uruchom go:

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

Wygląda na to, że robi dokładnie to, co chcesz. Pamiętaj, że możesz majstrować przy kulawych flagach, aby uzyskać pożądany poziom jakości.


3
To nadal działa dobrze w 2013 r.
MountainX

@David Futhcher, wzmianka o referencji to fajny nawyk :-), dziękuję!
AjayKumarBasuthkar

2

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

To polecenie przekonwertuje wszystkie pliki wma w danym katalogu na pliki mp3 (pozostawiając nienaruszone oryginały):

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

Jeśli czujesz się ryzykowny, możesz dodać --deleteopcję usunięcia oryginałów:

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


2

Wiem, że to trochę stare, ale zmodyfikowałem skrypt pokazany przez Davida Futchera. Zmiany są następujące:

  • Użyj /tmpzamiast bieżącego folderu jako tymczasowego pliku wav (dało to duże przyspieszenie, gdy użyłem go do konwersji plików na pamięci USB).

  • Usuń pliki wma po ich (miejmy nadzieję, że pomyślnie) konwersji.

Oto on:

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

ostatnie dwa wiersze można połączyć :-) -o "${wma_file}".mp3 && rm "${wma_file}" "${tmp_file}" to nieznacznie zwiększyłoby szybkość przetwarzania, ponieważ nie było innego exec dla rm.
AjayKumarBasuthkar

1

Dla tych, którzy szukają wersji GUI, która może wybrać określone typy plików: narzędzie KDE soundKonverter https://github.com/HessiJames/soundkonverter pyta, które typy plików należy dodać do kolejki konwersacji.

Najlepsze rozwiązanie dla mojej ogromnej kolekcji Audiobook zawierającej pliki mp3 / ogg / wma.


1

Oto moja edycja skryptu Marko Haapala, wykorzystująca 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

Wolę ffmpeg, ponieważ nie zmienia częstotliwości próbkowania i nie potrzebuje pośredniego pliku temp


0

Soundcoverter pokazuje błąd coś o module Windows Media i Pythonie 2.7

Avconv działał dobrze: avconv -i ./song.wma song.mp3


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.