Já ouviu falar sobre o ffmpeg mas não sabe por onde começar?
Como usar o ffmpeg
Neste guia, vou explicar como baixar, configurar (no Windows) e usar o ffmpeg para fazer várias operações em imagens, vídeos, áudio com alguns exemplos. O guia não cobre todas as possibilidades pois são muitas, mas as coisas mais comuns. Caso já tenha o ffmpeg, pule para o item 3.
1. Download
1.1. Download da página oficial
Para fazer o download do ffmpeg, entre no site oficial do ffmpeg: https://www.ffmpeg.org/download.html. Clique no logo do Windows como mostrado abaixo:
Após isso essa opção aparecerá, clicando nela você será levado a outro site: https://ffmpeg.zeranoe.com/builds/
O recomendado aqui é escolher a opção 4.2.1 (ou mais recente, que não contenha uma data, igual ao 2019/11/23) na primeira coluna. A opção de cima também é válida, mas por ser uma versão que é feita com as alterações diárias, pode conter bugs.
Escolha o seu Windows e deixe a opção Static na terceira coluna.
2. Instalação
2.1. Descompactar o arquivo
Estou usando o 7-zip para descompactar (Clique aqui para baixá-lo, pssst, é de graça, parem de clicar naquela tela do WinRAR toda vez 🙊). Como no zip o ffmpeg já vem dentro de uma pasta, vamos entrar dentro dela e descompactar nós mesmos em outra pasta.
Arquivos de dentro da pasta do ffmpeg:
A sugestão é que seja colocado em um caminho fácil de se chegar, pois precisaremos desse caminho em breve (e, caso não queira usar o PATH, todas as vezes que precisar usar o ffmpeg). Eu, particularmente, coloco o ffmpeg em C:\ffmpeg.
2.2. Facilitar o uso do ffmpeg em qualquer pasta (opcional)
Podemos usar o ffmpeg de qualquer pasta, independente de onde estamos, isso é feito colocando a pasta \bin do ffmpeg no PATH do Windows. PATH é uma listagem de pastas que o Windows sempre procura pelos arquivos se estão disponíveis lá dentro, independente de qual pasta você esteja no momento, então nesse caso, se quisermos usar o ffmpeg em qualquer lugar, é necessário colocar a pasta que contém o executável do ffmpeg no PATH.
Caso não queira, pule para o passo 3. Isso impossibilitará de usar o ffmpeg em qualquer pasta e você sempre terá que ir na pasta do ffmpeg para usá-lo.
Para isso, aperte a tecla Windows para abrir o menu iniciar e digite “environment” (em inglês) ou “ambiente” (em português) e clique em “Edit environment variables for your account” ou “Editar as variáveis de ambiente para sua conta”.
Aqui podemos editar o PATH para incluir a pasta do ffmpeg, clique em PATH na parte de cima da janela e clique em Edit(ar)….
Clique em New e uma nova entrada será adicionada à lista, digite o caminho para a pasta onde o arquivo ffmpeg.exe se encontra, ele fica dentro da pasta \bin de onde você descompactou o ffmpeg, nesse exemplo estamos usando C:\ffmpeg\bin.
Caso a tela de edição seja igual à tela abaixo, adicione um ; no final e digite o caminho completo da pasta da mesma forma que acima: C:\ffmpeg\bin. (Ambos passos são a mesma coisa, a tela de cima é só uma tela mais recente do Windows, e a abaixo versões mais antigas).
Após adicionar o ffmpeg no PATH, aperte a tecla Windows, digite cmd e dê Enter, o prompt de comando do Windows irá abrir, chamaremos essa janela de terminal.
Para se certificar que a inclusão do ffmpeg no PATH foi feita corretamente, digite ffmpeg e dê enter, várias coisas sobre o ffmpeg deverão aparecer.
Caso tenha dado errado, a seguinte mensagem aparecerá, que significa que o terminal não conseguiu achar o ffmpeg em nenhuma das pastas listadas pelo PATH ou na pasta atual, que é C:\Users\Xuxa.
3. Uso
3.1. Comandos básicos de um terminal
Quando você abrir o terminal, como na imagem acima, você vai ver um caminho de pastas a partir de um drive, nesse caso C:\Users\Xuxa. Isso significa que estamos dentro da pasta Xuxa que fica dentro da pasta Users, no drive C:.
Para navegar nessas pastas, usamos alguns comandos basicos, que são:
Comando | Descricao | Exemplo |
---|---|---|
X: | Troca para outro drive, substitua X por outra letra | D: vai para o drive D |
dir | Lista todas pastas e arquivos da pasta na qual você está | dir |
mkdir nome | Cria uma pasta chamada nome | mkdir xuxa cria uma pasta chamada xuxa |
cd nome | Entra em uma pasta chamada nome, ela já precisa estar criada | cd xuxa entra na pasta xuxa |
cd .. | Volta uma pasta | cd .. sai de C:\Users\Xuxa\ para C:\Users |
cd | Sai de todas as pastas até a letra do drive | cd \ sai de C:\Users\Xuxa\ para C: |
nome | Executa um programa chamado nome | ffmpeg executa o ffmpeg, é assim que utilizaremos ele |
Caso queira mexer em um arquivo que não esteja na pasta em que o cmd abriu, use os comandos acima para navegar até chegar na pasta desejada.
3.1. Comandos do ffmpeg
Os comandos digitados seguem uma lógica, cada opção além do nome do programa é chamada de parâmetro.
Alguns parâmetros definem propriedades por si só, como o parâmetro de não mostrar as propriedades do ffmpeg todas as vezes que ele for utilizado. (-hide_banner
).
Já, em outros parâmetros, são necessários dados adicionais, como para reduzir um video, é necessário definir o tamanho final desejado.
Os parâmetros são sempre especificados com um hífen e o nome da opção, e, no caso de dados adicionais, são digitados após um espaço, fazendo com que aqueles dados pertençam ao parâmetro anterior.
Exemplo: ffmpeg -i entrada.mp4 -ab 320 -vn -f mp3 saida.mp3
-i
é o parâmetro que define em qual arquivo o ffmpeg irá trabalhar, então ele precisa de dados adicionais, no caso, é o entrada.mp4
.
-ab
define o bitrate do mp3 de saída, 320
é o bitrate desejado.
-vn
é um parâmetro por si só, portanto não tem nenhum dado após ele, esse parâmetro desabilita o vídeo do arquivo de entrada.
-f
define o formato, que é mp3
.
e, por último, o nome do arquivo de saída, que é saida.mp3
. Esse arquivo será criado na mesma pasta na qual você está no momento. Essa opção não precisa de parâmetro, já que é esperado que você tenha um arquivo de saída, exceto no caso quando você só quer ver as propriedades de um arquivo.
Agrupando visualmente, ficaria assim:
ffmpeg [-i entrada.mp4] [-ab 320] [-vn] [-f mp3] [saida.mp3]
3.1. Propriedades do arquivo
Para ver as propriedades do arquivo usamos:
ffmpeg -i entrada.mp4
Caso queira mostrar somente as propriedades do arquivo, sem as propriedades do ffmpeg em si, use -hide_banner
como um parametro.
ffmpeg -i entrada.mp4 -hide_banner
3.2. Converter para outro formato
Caso tenha um arquivo video.flv
e deseja converter para mp4, use o comando abaixo:
ffmpeg -i video.flv video.mp4
Para listar todos os formatos disponíveis do ffmpeg, use:
ffmpeg -formats
3.3. Cortar partes
Para fazer um recorte do video, -filter:v com crop:
Em largura e altura, substituímos qual a largura e altura finais desejadas.
Em x e y, a coordenada na qual começaremos a contar a largura e altura.
3.3.1 Retângulo no meio do video
ffmpeg -i entrada.mp4 -filter:v "crop=largura:altura:x:y" saida.mp4
Nesse caso, para cortar essa parte da imagem:
ffmpeg -i entrada.mp4 -filter:v "crop=445:360:168:546" saida.mp4
Começando na coordenada 168x546, pegamos 445 pixels de largura e 360 de altura, resultando no corte abaixo:
3.3.2 Referências e possibilidade de se fazer contas
O ffmpeg conta com duas referências do tamanho do video de entrada, in_h
para altura e in_w
para largura. Podemos usar essas referências para pegar o canto inferior direito do video fazendo algumas contas:
ffmpeg -i entrada.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" saida.mp4
Começamos no ponto central da tela (metade de in_w
e metade de in_h
, e pegamos uma altura e largura correspondente à metade da tela também, resultando no canto inferior direito)
3.3.3 Omitindo a coordenada x:y
Quando omitimos a coordenada na qual deseja-se começar o recorte, o próprio ffmpeg calcula onde ficaria a coordenada onde o recorte fica centralizado na tela, ou seja, o recorte abaixo ainda possui metade da largura e altura, mas foi feito de forma que 1⁄4 da borda fosse removida, de todos os lados, como se fosse uma moldura.
ffmpeg -i entrada.mp4 -filter:v "crop=in_w/2:in_h/2" saida.mp4
3.3.4 Visualizando sem precisar reencodar
Caso necessite visualizar como ficaria o recorte, sem precisar reencodar o video, esperar, testar, etc, o comando ffplay faz exatamente isso:
Nesse caso, para ver como ficaria o resultado do vídeo com o comando de recorte acima, usamos:
ffplay -i entrada.mp4 -vf "crop=in_w/2:in_h/2"
3.4. Extrair audio
ffmpeg -i input.mp4 -vn audio.mp3
-vn
- desabilitar gravação de vídeo
Caso precise ser mais específico com o arquivo final de áudio:
ffmpeg -i input.mp4 -vn -ar 48000 -ac 2 -ab 192 -f mp3 audio.mp3
-ar
- frequência do arquivo final, geralmente são usados 22050
, 44100
e 48000
Hz.
-ac
- número de canais de áudio.
-ab
- bitrate, valores comuns são 128
, 192
, e 320
.
-f
- formato do arquivo final, se omitido o ffmpeg tenta chutar o formato correto com base no nome do arquivo de saída, a não ser que você precise de um formato e um codec específico, essa opção quase sempre ficará omitida.
3.5. Mudar a resolução
ffmpeg -i entrada.mp4 -filter:v "scale=x:y" -c:a copy saida.mp4
-c:a
- define o codec de áudio que será usado na saída, nesse caso, o áudio será somente copiado.
Exemplo para redimensionar um vídeo para 1280x720:
ffmpeg -i entrada.mp4 -filter:v "scale=1280:720" -c:a copy saida.mp4
O parâmetro -s
pode ser usado como abreviação para -filter:v "scale=x:y"
, observe que usando -s
, o divisor entre largura e altura é mudado de :
para x
.
ffmpeg -i entrada.mp4 -s 1280x720 -c:a copy saida.mp4
3.6. Remover áudio de um vídeo
ffmpeg -i entrada.mp4 -an saida.mp4
-an
- Esse parâmetro remove o áudio do vídeo de saída.
3.7. Cortar um vídeo
Para extrair uma parte do vídeo, em segundos, podemos usar alguns parâmetros:
ffmpeg -i entrada.mp4 -t 10 saida.mp4
-t
- Aqui especificamos o tempo em segundos, então o vídeo de saída começará no início do vídeo de entrada e ficará com a duração de 10 segundos. O tempo também pode ser especificado no formato hh:mm:ss
, hora.minuto.segundo.
Caso precise que o corte comece em outro momento, usamos -ss
.
ffmpeg -i entrada.mp4 -ss 15 -t 10 saida.mp4
Nesse caso o vídeo cortado ficará a partir dos 15 segundos do vídeo de entrada até os 25 segundos, pois tem duração de 10 segundos.
Para especificar até onde o corte vai, e não uma duração, usamos -to
.
ffmpeg -i entrada.mp4 -ss 15 -to 25 saida.mp4
Os dois últimos comandos são equivalentes, pois ambos cortam o video até os 25 segundos, o primeiro especificando duração e o segundo onde o corte ocorrerá.
4. Todos os comandos do ffmpeg
Este guia cobre algumas das coisas mais comuns de se fazer, manipulando imagens, vídeos e áudio, mas é possível fazer muito mais.
Todos os detalhes podem ser encontrados na documentação do ffmpeg neste link: https://ffmpeg.org/ffmpeg.html.