Em um terminal, primeiro procure a pasta que contém todas as suas músicas usando cd
, por exemplo:
cd /home/username/music/wma-to-convert
O seguinte fará uma lista de todos os arquivos na pasta atual e todas as subpastas terminadas em "wma" e armazenará a lista em um documento de texto chamado wma-files.txt
:
find . -type f | grep wma$ > wma-files.txt
Ou você pode criar o arquivo de texto manualmente, se quiser. Em seguida, digite o seguinte em um editor de texto e salve-o no mesmo diretório de wma-files.txt
, por exemplo, nomeando-o conv-script
:
#!/usr/bin/env bash
readarray -t files < wma-files.txt
for file in "${files[@]}"; do
out=${file%.wma}.mp3
probe='avprobe -show_streams "$file" 2>/dev/null'
rate='echo "$probe" | grep "^bit_rate" | sed "s:.*=\(.*\)[0-9][0-9][0-9][.].*::" | head -1'
ffmpeg -i "$file" -ab "$rate"k "$out"
done
Você provavelmente precisa definir o bit executável no script:
chmod +x conv-script
Em seguida, basta executá-lo:
./conv-script
Você também tem a opção de adicionar isso ao final da linha ffmpeg
, mas tenha cuidado:
&& rm "$file"
Para aqueles que não têm acesso ao avprobe, você pode usar o ffprobe, que faz o equivalente (ou seja, obtendo o bit_rate). Para fazer isso:
Substituir:
probe='avprobe -show_streams "$file" 2>/dev/null'
rate='echo "$probe" | grep "^bit_rate" | sed "s:bit_rate=\([0-9]\+\)[0-9]\{3\}::" | head -1'
com:
rate='ffprobe -v error -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1 "$file"'
Uma vez feito isso, todos os seus arquivos devem começar a converter e os originais wma devem ser deletados! Isso funcionou muito bem para mim converter arquivos flac para mp3. Infelizmente não tenho nenhum wma para testar, mas espero que seja bom para eles também.
NOTA: Embora eu não preveja nenhum problema, seria uma boa idéia copiar alguns arquivos para um novo diretório e testá-los neles.
Se você planeja freqüentemente converter Wma para mp3, o script abaixo converte e exclui automaticamente tudo na pasta fornecida como um argumento, Isso melhora um pouco o acima mencionado. Além disso, o comando ffmpeg é um pouco diferente do primeiro proposto, se o primeiro não funcionar, use o abaixo.
#!/usr/bin/env bash
cd "$1"
find . type f | grep wma$ > wma-files.txt
readarray -t files < wma-files.txt
for file in "${files[@]}"; do
out=${file%.wma}.mp3
ffmpeg -i "$file" -map_metadata 0:s:0 $out"
done
rm wma-files.txt
Então, você simplesmente o chama digitando seu terminal como:
./convScript /home/username/music
Assim, toda a pasta de músicas e suas subpastas terão sua música wma convertida automaticamente em mp3.
Como antes, você pode adicionar isso ao final da linha ffmpeg
para remoção do arquivo:
&& rm "$file"
EDIT (2017/06/23): não torna rm
o padrão