Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: velox256 em 11 de Agosto de 2008, 10:42

Título: Ajuda num script para conversão de áudio
Enviado por: velox256 em 11 de Agosto de 2008, 10:42
Moçada, alguém que saca do negócio poderia dar uma mão pra fazer um script pra encaixar um comando de conversão de áudio? O comando é:

Citar
ffmpeg -i arquivo.mp3 -acodec wmav2 arquivo.wma

Estava querendo algo que convertesse uma pasta inteira, ou seja, selecionava a pasta ou os arquivos/botão direito/converter para wma ou coisa do gênero. O nome do arquivo final (wma) poderia ser o mesmo do original (mp3), alguém pode dar um exemplo aí pra eu poder adaptá-lo?

A conversão de mp3 pra wma é pra caber mais arquivos em players de mp3, hehehehe... :)
Título: Re: Ajuda num script para conversão de áudio
Enviado por: boi em 12 de Agosto de 2008, 21:08
Vê se funciona:

Código: [Selecionar]
for i in *.mp3
do o=`basename "$i" .mp3`
ffmpeg -i "$i" -acodec wmav2 "$o".wma
done
Título: Re: Ajuda num script para conversão de áudio
Enviado por: boi em 12 de Agosto de 2008, 21:27
Testei agora, e o pior é que funcionou mesmo. Se quiser uma interface gráfica, dá para fazer com o zenity.
Só que eu não recomendaria usar wma. Ao contrário do que prega a MS, o som do wma com 64kbps não fica com a mesma qualidade do mp3 de 128kbps. Em testes que fiz com o wma usando o próprio encoder do Windows algumas músicas ficaram distorcidas mesmo com 192kbps, que é o máximo.
Título: Re: Ajuda num script para conversão de áudio
Enviado por: velox256 em 12 de Agosto de 2008, 21:53
Funcionou perfeitamente, nem precisa selecionar os arquivos em uma pasta, basta selecionar um só, mandar converter (usando o Nautilus Scripts) e ele mesmo já manda bala em tudo. Eu só queria ser um pouquinho mais chato, não dá pra fazer com que o terminal mostre o que está ocorrendo com o arquivo (ou arquivos) que está sendo convertido? Só dá pra saber qdo a conversão acaba qdo o meu screenlet de uso da CPU volta a mostrar o 1%-5% de uso normal da minha máquina, hehehe...

Qto ao lance de conversão ser boa ou ruim, não noto muita diferença (vai ver estou ficando surdo), é que eu tenho vários arquivos de 320kbps enormes e gostaria de reduzi-los para caber mais coisas no mp3. Sei que posso fazer isso baixando de 320 para 128kbps em mp3, mas o wma compacta mais ainda e não noto muita perda; ou minha máquina é muito boa ou estou ficando surdo mesmo, hehehe, mesmo pq uso os arquivos em players de mp3 com aqueles fones de arco 'semi-auriculares'. Conheço vários testes de desempenho de arquivos mp3 e wma e tal, mas como sou duro e não tenho grana pra comprar um IPod, vou me virando no meu China-Pod, que também divide o espaço com vídeos de filmes inteiros.
Título: Re: Ajuda num script para conversão de áudio
Enviado por: boi em 12 de Agosto de 2008, 23:56
Vê se tá bom assim:

Código: [Selecionar]
#!/bin/bash

for i in *.mp3
do o=`basename "$i" .mp3`
ffmpeg -y -i "$i" -acodec wmav2 "$o".wma 2>&1 | zenity --progress --pulsate --title="Convertendo" --text="$o" --auto-close
done
Título: Re: Ajuda num script para conversão de áudio
Enviado por: velox256 em 13 de Agosto de 2008, 07:13
Êita nós que o bagulho ficou bom pra caramba, vou começar a dar umas fuçadas nesse negócio de script, já que o Linux não dá defeito, tem que procurar outras coisas pra fazer, hehehehe...

Valeu à todos aí.


Vê se tá bom assim:

Código: [Selecionar]
#!/bin/bash

for i in *.mp3
do o=`basename "$i" .mp3`
ffmpeg -y -i "$i" -acodec wmav2 "$o".wma 2>&1 | zenity --progress --pulsate --title="Convertendo" --text="$o" --auto-close
done
Título: Re: Ajuda num script para conversão de áudio
Enviado por: alarcon em 14 de Agosto de 2008, 16:59
Mais alguns exemplos de scripts wma2mp3:

Código: [Selecionar]
#!/bin/bash

current_directory=$( pwd )
for i in *.wma; do mv "$i" `echo $i | tr ' ' '_'`; done
for i in *.[Ww][Mm][a]; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -waveheader $i && lame -m s audiodump.wav -o $i; done
for i in *.wma; do mv "$i" "`basename "$i" .wma`.mp3"; done
rm audiodump.wav
fonte: http://www.vivaolinux.com.br/dica/Convertendo-wma-para-mp3/



Código: [Selecionar]
#!/bin/bash

for i in *wma; do
cp -v "$i" `echo $i | tr ' ' '_'` > log
cat log | cut -d '`' -f 3 | sed -s "s/'//" >> list_arq
done

# converter com o mplayer / codificar com a LAME
for i in `cat list_arq`; do
mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader $i > mp_log && echo 0 > log || echo 1 > log
title=`cat mp_log | grep name: | cut -d ":" -f 2 | cut -d " " -f 2-`
author=`cat mp_log | grep author: | cut -d ":" -f 2 | cut -d " " -f 2-`
track="$(( $track + 1 ))"

if [ -z "$title" ]; then
title="Unknown"
fi
if [ -z "$author" ]; then
author="Unknown"
fi

if [ `cat log` = "0" ]; then
  if [ $track -le "9" ]; then
   lame -m s audiodump.wav --tt "${title}" --ta "${author}" --tn "${track}" -o "0${track} - ${title}.mp3"
   else
   lame -m s audiodump.wav --tt "${title}" --ta "${author}" --tn "${track}" -o "${track} - ${title}.mp3"
   fi
  else
  echo "Erro ao decodificar o arquivo: $i"
  echo "Saida de erro:"
  echo
  cat mp_log
  rm $i log mp_log
  exit 1
  fi

rm $i
rm log mp_log
done

rm audiodump.wav
rm list_arq
exit 0
fonte: http://www.vivaolinux.com.br/script/wma2mp3


NOTA: Para isso é preciso ter o mplayer e o lame instalados.



===EDITADO===

Desculpe-me você deseja é o contrário de mp3 para wma, mas de qualquer forma serve de estudo da estrutura de um script que pega vários arquivos em uma pasta e converte de um tipo de arquivo de som em outro. Quem sabe que com algumas adaptações funcione também no caso contrário mp3 > wma.
Título: Re: Ajuda num script para conversão de áudio
Enviado por: velox256 em 15 de Agosto de 2008, 11:21
Beleza, estava querendo um desses também, de wma para mp3, mas pra isso eu também uso o SoundConverter (e o com 'K' também...). :)
Título: Re: Ajuda num script para conversão de áudio
Enviado por: Ricardones em 21 de Agosto de 2008, 18:41
aham!