Autor Tópico: Script que usa o FFMPEG para converter áudio MP4/M4V/M4A em MP3  (Lida 3644 vezes)

Offline Sampayu

  • Usuário Ubuntu
  • *
  • Mensagens: 498
  • "Não é possível semear de mãos fechadas"
    • Ver perfil
    • YouTube
Script que usa o FFMPEG para converter áudio MP4/M4V/M4A em MP3
« Online: 26 de Janeiro de 2023, 19:30 »
Há alguns dias, precisei usar o comando ffmpeg no terminal do shell para gerar um arquivo1.mp3 a partir do respectivo arquivo1.m4a (arquivo-fonte de áudio em formato MPEG-4).

Passados alguns dias, também tive de gerar arquivo2.mp3, arquivo3.mp3, arquivo4.mp3 e arquivo5.mp3 respectivamente a partir de arquivo2.m4a, arquivo3.m4a, arquivo4.m4a e arquivo5.m4a.

Resolvi então fazer um script do shell Bash, bem simples (sem recursão, sem opções de compressão nem nada), só para encurtar o comando. Ele usa o ffmpeg para extrair a faixa de áudio, convertê-la do formato MPEG-4 para o formato MPEG-3 e então salvá-la dentro de um arquivo .mp3.

Por isto, se eu atualmente quiser gerar um arquivo .mp3 a partir de um arquivo .m4a, eu só preciso digitar o nome do script e o caminho completo para o arquivo .m4a. Por exemplo, o comando:

Código: [Selecionar]
m4amp3.sh /music/rock/faixa1.m4a
...criará o seguinte arquivo:

Código: [Selecionar]
/music/rock/faixa1.mp3
Além disso, caso o arquivo contenha vídeo MPEG-4 (i.e. possua uma extensão-container tal como .mp4 ou .m4v), com o script também é possível executar um comando como por exemplo (fictício) este:

Código: [Selecionar]
m4amp3.sh /videos/filmes/filme1.mp4...ou
Código: [Selecionar]
m4amp3.sh /videos/filmes/filme1.m4v...e então o script usará o ffmpeg para extrair uma cópia da faixa de áudio .m4a que está dentro do arquivo .mp4/.m4v, converter essa cópia para o formato de áudio MPEG-3 e então gerar o seguinte arquivo de áudio:
Código: [Selecionar]
/videos/filmes/filme1.mp3
  • Caso alguém tenha interesse em usar isso, o primeiro passo é abrir uma janela do emulador de terminal do shell (por exemplo pressionando a combinação de teclas Ctrl Alt T) e então executar o comando abaixo, para instalar o ffmpeg:
Código: [Selecionar]
sudo snap install ffmpeg
  • O segundo passo é executar o comando abaixo, para criar uma pasta scripts dentro da sua pasta pessoal.
    (você pode selecionar o comando abaixo e então usar a combinação de teclas Ctrl C para copiá-lo. Em seguida, clique na janela do emulador de terminal e então pressione a combinação de teclas Ctrl Shift V para colá-lo, daí basta pressionar Enter. Pule esta etapa caso você já possua uma pasta desse tipo)
Código: [Selecionar]
mkdir ~/scripts
  • O terceiro passo é usar o editor de textos Nano para criar o arquivo de script m4amp3.sh dentro da pasta scripts (caso você já possua uma pasta scripts em outro local, ajuste o comando abaixo para que aponte para o local dessa sua pasta):
Código: [Selecionar]
nano ~/scripts/m4amp3.sh
  • O quarto passo consiste em copiar o código abaixo e então colá-lo (Ctrl Shift V) dentro da tela do Nano:
Código: [Selecionar]
#!/bin/bash
# Este script usa o ffmpeg para gerar um arquivo de áudio MPEG-3 (extensão .mp3) a partir de um arquivo
# de áudio (ou de vídeo) que esteja no formato MPEG-4 (extensão .mp4, .m4v, .m4a etc.).

export font=$1
echo Uso: m4amp3.sh /caminho/para/o/arquivo.m4a
echo ""

if ! command -v ffmpeg &> /dev/null
then
echo O bash não encontrou o executável do ffmpeg!
echo ""
echo Saindo...
sleep 3
exit
fi

while [[ $font = "" ]]
do
echo Informe o caminho completo para o arquivo m4a!
echo ""
echo Saindo...
sleep 3
exit
done

export name=${font%.???}
if [ -f "$font" ]
then
ffmpeg -i "$font" -c:a libmp3lame "$name.mp3"
else
echo $font
echo NÃO é um caminho válido para um arquivo m4a!
echo ""
echo Saindo...
sleep 3
exit
fi

exit
  • O quinto passo consiste em pressionar a combinação de teclas Ctrl O e pressionar Enter para salvar essa alteração, e em seguida pressionar a combinação de teclas Ctrl X para sair do Nano.
  • O sexto passo consiste em executar o comando abaixo, para tornar esse script executável:
Código: [Selecionar]
chmod +x ~/scripts/m4amp3.sh
  • O sétimo passo consiste em adicionar sua pasta scripts à variável PATH do arquivo de configuração do seu shell Bash (arquivo .bashrc dentro da sua pasta pessoal), para que os scripts que você puser na sua pasta de scripts sejam reconhecidos sempre que você digitar o nome deles no emulador de terminal. Para fazer isso, use o Nano para abrir o arquivo de configuração do seu Bash:
Código: [Selecionar]
nano ~/.bashrcCaso o Nano mostre para você que dentro desse arquivo existe uma linha começando com PATH=, então adicione o endereço da sua pasta de scripts. Por exemplo, se dentro do arquivo .bashrc existir uma linha assim:
Citar
PATH=$PATH:/opt/java/jre/bin

...então adicione o código :~/scripts ao final daquele código. Assim:

Citar
PATH=$PATH:/opt/java/jre/bin:~/scripts

Caso o arquivo .bashrc aberto pelo Nano não tenha nenhuma referência à variável PATH, então adicione esta linha ao final do arquivo:

Citar
PATH=$PATH:~/scripts
  • O oitavo passo consiste em executar o quinto passo novamente, para salvar as alterações feitas (Ctrl O + Enter) e então sair do editor de texto Nano (Ctrl X).
  • O nono passo consiste em executar o seguinte comando, que fará o shell inicializar as configurações que você adicionou:
Código: [Selecionar]
source ~/.bashrc

    Pronto: daqui para a frente, bastará executar o comando m4amp3.sh /caminho/para/o/arquivo.m4a que um arquivo mp3 com o mesmo nome será criado dentro da mesma pasta.  ;)

    PS: o ffmpeg instalado como snap requer que o arquivo (de áudio ou vídeo) MPEG-4 NÃO esteja dentro de nenhuma pasta do sistema (como por exemplo /tmp, /usr ou /opt). Consequentemente, caso o ffmpeg instalado por você realmente seja um snap, coloque o arquivo de áudio/vídeo MPEG-4 dentro da sua pasta pessoal que está em /home e somente então use o script.
    « Última modificação: 11 de MAR?O de 2023, 12:32 por Sampayu »
    Yuri Sucupira ("Sampayu")