Converter biblioteca de faixas WMA em MP3?

28

Eu sei que existem opções como o Sound Converter para executá-las uma faixa ou diretório por vez, mas existem ferramentas que rastrearão recursivamente os subdiretórios de um diretório e converterão todos os WMA em MP3?

Eu basicamente gostaria de soltá-lo no meu ~ / Music e deixá-lo funcionar sem que eu tivesse que atribuir manualmente um subdiretório de cada vez.

Mike Crittenden
fonte
Como nota, se algum arquivo WMA tiver DRM, nenhum aplicativo Linux poderá descriptografá-lo.
Broam 01/08/19

Respostas:

17

É provável que o MPlayer já esteja instalado. Também verifique se você tem coxo:

sudo apt-get install mplayer lame

Depois, há duas maneiras de fazer isso, uma versão de fácil leitura e um script curto e sujo para fazer isso:

Todos os wmas devem estar no seu diretório atual. Crie um arquivo chamado wmamp3 em seu diretório pessoal (~ /) contendo:

#!/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 para torná-lo executável

sudo cp ~/wmamp3 /usr/bin colocá-lo em algum lugar útil no seu caminho

Digite "wmamp3" para executar sua conversão.


A versão curta e suja (faz exatamente o mesmo que acima):

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
Rory Alsop
fonte
Obrigado, mas preciso de um que repasse diretórios recursivamente, pois eles estão espalhados por muitos subdiretórios do ~ / Music.
Mike Crittenden
Você pode facilmente expandir o script para fazer uma busca recursiva de arquivos - eu provavelmente refaria o primeiro script usando find, canalizando a saída para o mplayer.
Rory Alsop
Esta resposta não está funcionando para mim em 2013. No entanto, esta resposta funciona: askubuntu.com/a/55469/36661
MountainX
1
A versão e suja rápida ainda funciona em 2016 (em 14.04) se você substituir -ao pcm -waveheadercom -ao pcm:waveheader.
M00am
1
Boa solução com script. Funciona sem modificações em setembro de 2019 no xubuntu 19.04.
Balu
40

Instale o Soundconverter Instale o conversor de som

e execute a Soundconverterpartir do iniciador ou terminal

insira a descrição da imagem aqui

A conversão padrão é .oggalterada mp3para edit-> preferencessob o tipo de resultados. Formatpara MP3 da seguinte forma:

insira a descrição da imagem aqui

Clique em adicionar pasta e selecione sua pasta de músicas. Você pode selecionar a pasta de saída na configuração de preferências acima antes de clicar em converter.

Espero que isso seja feito com dois cliques :)

Achu
fonte
2
Este é certamente um simples ponto e clique. +1 de mim :-)
Rory Alsop
O problema com esta solução é que o SoundConverter executa extremamente lentamente ou congela completamente quando mais de duas centenas de músicas são adicionadas ao mesmo tempo, e minha biblioteca tem cerca de 5k.
Mike Crittenden
5k? wooo isso é muito;) mesmo assim, depende do desempenho do seu computador. pode ser que você precise separar esses arquivos. i pessoal converteu um par de centenas de canções sem congelamentos :)
Achu
13

O Mplayer e o lame devem ser instalados primeiro:

sudo apt-get install mplayer lame

Em seguida, crie o script ( página de referência ) e execute-o:

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

Parece que faz exatamente o que você deseja. Lembre-se de que você pode querer mexer nas bandeiras coxas para garantir o nível de qualidade desejado.

David Futcher
fonte
3
Isso ainda funciona bem em 2013
MountainX
@ David Futhcher, mencionar referência é um bom hábito :-), obrigado!
AjayKumarBasuthkar
2

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

Este comando converterá todos os arquivos wma em um determinado diretório para arquivos mp3 (deixando os originais intactos):

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

Se você estiver se sentindo arriscado, pode adicionar a --deleteopção de remover também os originais:

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

Eric Mathison
fonte
2

Eu sei que isso é um pouco antigo, mas modifiquei o script mostrado por David Futcher. As mudanças são:

  • Use em /tmpvez da pasta atual para o arquivo wav temporário (isso deu uma grande aceleração quando usei isso para converter arquivos em um pendrive).

  • Remova os arquivos wma depois que eles foram convertidos.

Aqui está:

#!/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
V10lator
fonte
as duas últimas linhas podem ser mescladas :-) -o "${wma_file}".mp3 && rm "${wma_file}" "${tmp_file}" isso aumentaria levemente a velocidade do processamento, pois outro executivo da rm está ausente.
AjayKumarBasuthkar
1

Para aqueles que procuram uma versão da GUI capaz de selecionar certos tipos de arquivos: a ferramenta soundKonverter do KDE https://github.com/HessiJames/soundkonverter pergunta quais tipos de arquivos devem ser adicionados à fila de conversas.

A melhor solução para a minha enorme coleção de livros de áudio contendo arquivos mp3 / ogg / wma.

tuxflo
fonte
1

Aqui está minha edição do script Marko Haapala, usando 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

Prefiro ffmpeg, porque não altera a taxa de amostragem e não precisa de arquivo temporário intermediário

Slavik
fonte
0

O Soundcoverter mostra um erro sobre o módulo Windows Media e o Python 2.7

Avconv funcionou bem: avconv -i ./song.wma song.mp3

mapcuk
fonte