Utilizando FFmpeg para converter vídeos e audio

O FFmpeg é uma ferramenta que pode ser utilizada para diversas ações com vídeo e audio (encode, decode, transcode, crop e etc…). O FFmpeg é uma poderosa ferramenta por ser multi plataformas (windows, linux, mac), pequena leve e portátil.

Segue o link oficial da ferramenta: https://www.ffmpeg.org

Agora chega de bla, bla, bla… e vamos ao que interessa, os comandos de conversão.

Segue o link para a página oficial do FFmpeg para download: https://www.ffmpeg.org/download.html

Convertendo para MP4

ffmpeg -i source_file.mov -b:v 16M -vcodec h264 -acodec aac -strict -2 destination_file.mp4

Segue a explicação de cada parâmetro:

  • -i source_file.mov: Arquivo de entrada, ou seja, o vídeo original. Este exemplo demostra a conversão de um arquivo MOV para MP4, mas pode ser utilizado qualquer arquivo suportado pelo FFmpeg como entrada que o comando funcionará. Ex.: (avi, mov, 3gp e wmv). 
  • -b:v 16M: Definição de um bitrate máximo de 16 Mbps para o vídeo
  • -vcodec h264: Utilização do coded h264 para saída de vídeo, ou seja, para o vídeo de destino ja convertido
  • -acodec aac -strict -2: Utilização do codec aac como saída de audio
  • destination_file.mp4: Arquivo do vídeo convertido

Convertendo para WMV

ffmpeg -i source_file.3gp -b:v 16M -vcodec msmpeg4 -acodec wmav2 destination_file.wmv

Segue a explicação de cada parâmetro:

  • -i source_file.3gp: Arquivo de entrada, ou seja, o vídeo original. Este exemplo demostra a conversão de um arquivo 3GP para WMV, mas pode ser utilizado qualquer arquivo suportado pelo FFmpeg como entrada que o comando funcionará. Ex.: (avi, mov, mp4 e wmv).
  • -b:v 16M: Definição de um bitrate máximo de 16 Mbps para o vídeo
  • -vcodec msmpeg4: Utilização do codec msmpeg4 para saída de vídeo, ou seja, para o vídeo de destino ja convertido
  • -acodec wmav2: Utilização do coded wmav2 como saída de audio
  • destination_file.wmv: Arquivo do vídeo convertido

Convertendo para MP3

ffmpeg -i source_file.avi -b:a 16M -acodec libmp3lame destination_file.mp3

Segue a explicação de cada parâmetro:

  • -i source_file.avi: Arquivo de entrada, ou seja, o vídeo original. Este exemplo demostra a conversão de um arquivo AVI para MP3, mas pode ser utilizado qualquer arquivo suportado pelo FFmpeg como entrada que o comando funcionará. Ex.: (avi, mov, mp4 e wmv).
  • -b:a 16M: Definição de um bitrate máximo de 16 Mbps para o audio
  • -acodec libmp3lame: Utilização do codec libmp3lame como saída de audio
  • destination_file.mp3: Arquivo de audio convertido

Extração/corte de parte de audio/vídeo

ffmpeg -ss 210 -t 30 -i source_file.mov -b:v 16M -vcodec h264 -acodec aac -strict -2 destination_file.mp4

Neste exemplo utilizamos o mesmo comando do primeiro exemplo (convertendo para MP4) porém extraindo somente uma parte do vídeo, porém os 2 parâmetros utilizado para este corte (-ss e -t) podem ser utilizado para todos os outros exemplos.

Segue a explicação de cada parâmetro:

  • -ss 210: Início da área de corte, ou seja, o ponto do vídeo original que será convertido. Neste caso no segundo 210.
  • -t 30: O tamanho, em segundos, do novo vídeo a partir do ponto inicial definido no parâmetro anterior
  • -i source_file.mov: Arquivo de entrada, ou seja, o vídeo original. Este exemplo demostra a conversão de um arquivo MOV para MP4, mas pode ser utilizado qualquer arquivo suportado pelo FFmpeg como entrada que o comando funcionará. Ex.: (avi, mov, 3gp e wmv).
  • -b:v 16M: Definição de um bitrate máximo de 16 Mbps para o vídeo
  • -vcodec h264: Utilização do coded h264 para saída de vídeo, ou seja, para o vídeo de destino ja convertido
  • -acodec aac -strict -2: Utilização do codec aac como saída de audio
  • destination_file.mp4: Arquivo do vídeo convertido

Facilitando a vida em windows

Para usuários windows (como eu) fica maio chato ter que entrar no command, digitar tudo sempre que precisar converter, desta forma criei um bach .cmd que recebe como primeiro parâmetro o nome do arquivo a ser convertido, altera o nome do arquivo de saída conforme o script e realiza a conversão. Desta forma basta que eu arraste o arquivo a ser convertido para cima do arquivo CMD que ele faz o resto.

Como fazer isso? Vamos la…

Primeiro realize o download do FFmpeg no local de sua preferência. No meu ambiente coloquei em C:\FFmpeg.

Agora crie neste diretório um arquivo nomeado converte_para_mp4.cmd e adicione o seguinte conteúdo

@echo off
SET _file=%1
SET _newFile=%_file:avi=mp4%
SET _newFile=%_newFile:AVI=mp4%
SET _newFile=%_newFile:MOV=mp4%
SET _newFile=%_newFile:mov=mp4%
SET _newFile=%_newFile:3GP=mp4%
SET _newFile=%_newFile:3gp=mp4%
SET _newFile=%_newFile:WMV=mp4%
SET _newFile=%_newFile:wmv=mp4%

rem MOV to MP4
c:\FFmpeg\ffmpeg.exe -i %1 -b:v 16M -vcodec h264 -acodec aac -strict -2 %_newFile%

Agora para converter o seu vídeo basta arrastar o arquivo de vídeo para cima deste arquivo cmd conforme ilustrado na imagem abaixo

Convert

Helvio Junior

Helvio Junior

Gerente de Infraestrutura de TI e Telecomunicações em Fael, uma empresa do grupo Apollo Global
Especialista em redes e segurança de sistemas pela PUC-PR, consultor de redes e segurança da informação. CEO e CTO da SafeTrend, com um produto de single sign-on e gestão de identidades e acessos. Especialista em Segurança da Informação, Controle de Acesso, ambientes e ferramentas de segurança, telefonia VoIP com Asterisk, administração de redes em ambientes híbridos e realização de penetration test (pentest).
Helvio Junior

Últimos posts por Helvio Junior (exibir todos)

4 respostas
  1. luiz porto
    luiz porto says:

    Alguem saberia me dizer o motivo ???
    – uma mesma linha de comando funciona em um arquivo e em outro nao.
    > ok
    ffmpeg -i C:\FFMPEG\input.mp4 -filter:v scale=-1:480 -c:v h264 -b:v 512k -minrate 512k -maxrate 512k -bufsize 512k -r 23 -c:a copy C:\FFMPEG\output.MP4
    > erro
    ffmpeg -i C:\FFMPEG\input.mkv -filter:v scale=-1:480 -c:v h264 -b:v 512k -minrate 512k -maxrate 512k -bufsize 512k -r 23 -c:a copy C:\FFMPEG\output.MP4

    Responder
  2. Marcelo Cunha Ramos
    Marcelo Cunha Ramos says:

    Eu consegui converter arquivos na quinta ou sexta passada, mas hoje, a conversão está falhando e aparece em vermelho:
    Too many packets buffered for output stream 0:1
    [aac @ 04fb37c0] Qavg: 359.224
    [aac @ 04fb37c0] Qavg: 2 frames left in the queue on closing
    Conversion failled!

    A linha de comando é:
    ffmpeg -i para_converter.avi -b:v 16M -vcodec: libx264 -acodec: aac convertido.mp4

    Não sei o que está acontecendo, mas depois que eu consegui converter um arquivo eu atualizei o windows 7 e deletei o conteudo da pasta temp.

    Alguém sabe como resolver???
    Desde já, agradeço!

    Responder

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *