Você está na página 1de 17

11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit

ciência games mobile hardware engenharia entretenimento

O que você procura?

Meio Bit » Software » Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos

Tutorial: FFMPEG – 0 canivete


suíço da manipulação de vídeos
FFMPEG é a mais poderosa ferramenta para manipulação de vídeo em linha de
comando. Venha dominar esse poder!

Carlos Cardoso 27/11/2023 às 22:31

FFMPEG é um programa em linha de comando -e isso já espantou metade da audiência-


que é usado “secretamente” por quase todos os softwares de edição e manipulação de
vídeo, mas o grande segredo é que ele pode ser usado diretamente, de forma bem mais
rápida e eficiente.

StableDiffusionXL e Fooocus - Tutorial Completo


YouTube traz novas ferramentas para criadores de conteúdo

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 1/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit

O FFMPEG é mais ou menos isso. (Crédito: Editoria de Arte/Stable Diffusion)

É claro que eu uso meus DaVincis Resolves da vida, e para muito vídeo curto eu ainda
uso o venerável Windows Movie Maker, disponível no Internet Archive, mas há muita
coisa que eu acabo automatizando com o FFMPEG. Mas... o que dá pra fazer com ele?

A documentação do FFMPEG é imensa, daria para escrever um testamento com todos


os comandos, mas seria muita canalhice até para mim jogar tudo no ChatGPT, pedir pra
ele reescrever e postar aqui. Vamos então a uma série de casos e usos, e no final o
caminho das pedras para quem quiser instalar o bicho.

O que é um FFMPEG?
Ele é um software altamente otimizado, com apenas 127MB de tamanho, que
reconhece centenas de CODECS de vídeo, e é capaz de todo tipo de manipulação de
dados, de gerar histogramas a converter entre todos os formatos. Ele faz upscaling,
converte DVDs, muda aspect ratio, faz estabilização de imagens, insere legendas e
incluir/remover watermarks. Ah sim, também dá pra criar gifs e PNGs animados. (sim,
existe PNG animado)

1 – Converter entre formatos


Esse é o feijão com arroz do FFMPEG, e nem vale o artigo. Abrindo um prompt de
comando, vá para o diretório onde está o arquivo que você quer converter, teste.avi por
https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 2/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
exemplo.

O comando é:

ffmpeg -i teste.avi saída.mp4

A beleza é que ele faz tudo sozinho, identificando o formato de entrada, e deduzindo o
de saída de acordo com a extensão. Áudio também é tratado de forma transparente.

A principal vantagem aqui é que o FFMPEG tem zero peso morto, não tem GUI em Visual
Basic para rastrear IPs, não tem vários processos rodando em background. No momento
em que você apertar <enter>, ele começa a torar sua CPU, usando todos os núcleos e
threads que conseguir se apossar.

2 – Criando Colorbar
Você sabe, aquele vídeo com padrão de cores e um tom de 1KHz, usado para calibrar
seu sistema, antes do vídeo principal começar. Ninguém precisa abrir o Premiere só para
gerar um vídeo de colorbar, basta usar o comando:

fmpeg -f lavfi -i "smptebars=size=1920x1080:rate=30" -f lavfi -i


"sine=frequency=1000:sample_rate=48000" -t 10 saida.mp4

Você sabe, piiiiii (Crédito: Editoria de Arte)

Ele irá gerar um vídeo com resolução de 1920x1080, 30 frames por segundo, com 10
segundos de duração.

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 3/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit

3 – Legendando Vídeos
Nós já aprendemos com o Whisper como transcrever e traduzir um áudio para um
arquivo de texto, diretamente no formato .srt usado pela maioria dos programas.
Softwares como o VLC conseguem ler diretamente os arquivos e exibi-los corretamente,
mas seria mais conveniente ter tudo em um arquivo só. Felizmente containers como
MP4 permitem que você tenha legendas incorporadas ao arquivo principal.

Peguemos o clássico discurso de John Kennedy anunciando o Programa Apollo.

Com o Whisper, geramos o arquivo de legendas em português e salvamos como


Kennedy.srt.

Colocando os dois arquivos no mesmo diretório, na linha de comando comandamos:

ffmpeg -i kennedy.mp4 -i kennedy.srt -c copy -c:s mov_text -metadata:s:s:0 language=por


kennedy_leg.mp4

E pronto, nosso vídeo kennedy_leg.mp4 agora tem legendas selecionáveis por


software.

Se você quiser forçar as legendas para que elas sejam “queimadas” no vídeo, pode usar
o comando:

ffmpeg -i kennedy.mp4 -vf "subtitles=kennedy.srt" -c:a copy -c:v h264 -metadata:s:s:0


language=por kennedy_leg_hard.mp4

1.00

00:00 02:05

Note que essa modalidade é bem mais lenda, pois o vídeo precisa ser reencodado.

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 4/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
Ah sim, você também pode usar o FFMPEG para extrair legendas, caso queira usá-las
como base para uma transcrição, ou para corrigir algo. O comando é:

ffmpeg -i video.mp4 -map 0:s:0 output_legenda.srt

Legendas, legendas a rodo. (Crédito: Editoria de Arte)

Alguns vídeos possuem várias legendas disponíveis, como este episódio de Rick and
Morty. Aqui o FFMPEG não pode te ajudar, ele não sabe extrair todas de uma vez. Você
precisa contar a posição, começando do zero. As legendas em português brasileiro são a
16ª da lista, então o comando é...

ffmpeg -i rick.mp4 -map 0:s:15 output_subtitle.srt

4 – Extraindo frames
Algumas vezes você precisa de uma seqüência de frames de um vídeo. Pode ser para
criar um gif animado, selecionar uma imagem específica que aparece muito
rapidamente, ou para processamento avançado, como alteração por IA, upscaling ou
restauração.

Aqui temos um problema, a maioria dos formatos de vídeo modernos não trabalha
exatamente com frames, eles comprimem os dados e guardam as alterações entre os
keyframes, b-frames e outros frames que não temos tempo para detalhar. O FFMPEG

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 5/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
pode ser comandado para reconverter isso tudo e extrair a maior quantidade de frames
possível de um vídeo, e é simples.

Primeiro, crie uma subpasta chamada frames, no diretório onde estamos trabalhando.
Feito isso, basta o comando:

ffmpeg -i kennedy.mp4 -q:v 1 -qmin 1 -qmax 1 frames/out%4d.jpg

a porção out%4d.jpg diz ao FFMPEG para criar arquivos em formato JPEG (.png também
é aceito) no formato outXXXX.jpg, onde XXXX é a numeração do frame, começando em
0000. Vídeos com mais de 10000 frames, é recomendado usar %5d ou mesmo %6d, para
tudo ficar organizado.

5 – Criando vídeos usando frames


É o caminho inverso. Digamos que você tenha tratado os frames do vídeo original, e
agora queira juntar todos os frames em um novo vídeo. O comando é:

ffmpeg -framerate 29.97 -i frames/out%04d.jpg novovideo.mp4

Aqui estamos assumindo que a taxa original era de 29.97 quadros por segundo, claro.

“Ah mas e o áudio?”

Excelente pergunta, gafanhoto. Você pode extrair o áudio do arquivo original com o
comando:

ffmpeg -i kennedy.mp4 -vn -acodec libmp3lame -q:a 4 kennedy_audio.mp3

Para reincorporar (ehê!) o áudio ao novo vídeo, durante sua criação, o comando é

ffmpeg -framerate 29.97 -i frames/out%04d.jpg -i kennedy_audio.mp3 kenconp.mp4

6 – Detectando cenas
Existem ferramentas mais complexas e dedicadas, como o PySceneDetect, mas às
vezes você precisa de um método rápido de analisar um vídeo, detectar as cenas

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 6/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
individuais e criar um mosaico com elas, para ter uma visão geral do arquivo como um
todo.

Seus problemas acabaram! O FFMPEG também faz isso!

Esvazie o nosso diretório “frames”. Agora no diretório acima, abra a linha de comando
e...

ffmpeg -i rick.mp4 -vf "select='gt(scene,0.75)'" -vsync vfr frames/frame%4d.jpg

Estamos comandando o FFMPEG para analisar o arquivo rick.mp4 em busca de


mudanças de cenas. Se um frame for substancialmente diferente do anterior, ele o grava
no diretório frames, com numeração sequencial.

A diferenciação é sempre a parte complicada, cada vídeo tem um fator ideal diferente.
Os valores aqui variam entre 0 e 1, onde 0 significa que a mais ínfima diferença é
suficiente para o frame ser gravado. Valores mais altos fazem com que os frames
precisem ser mais distintos para disparar o processo. 0.6 é um bom valor inicial.

7 – Criando Mosaicos
Obviamente fica muito mais fácil se todas as imagens estão em um único arquivo.
Tecnicamente o FFMPEG não é um processador de imagens estáticas, mas como ele faz
basicamente tudo...

Precisamos apenas dar o comando:

ffmpeg -framerate 30 -i frames/frame%4d.jpg -filter_complex "


[0:v]scale=min(400\,iw*5/10):-1,tile=5x16" mosaico.jpg

Ele irá ler os arquivos no diretório frames, e montar um mosaico com 5 imagens na
horizontal e 16 na vertical, de nome mosaico.jpg.

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 7/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit

O mosaico gerado. (Crédito: Editoria de Arte)

Normalmente esses arquivos ficam bem grandes rapidamente, ainda mais se você
estiver mosaicando um vídeo em 4K. Por isso o comando scale permite que a gente
determine a largura das imagens individuais. No caso, eu escolhi 400 pixels. Com 76
frames, isso resultou em um arquivo de 2000 x 3600 pixels:

O comando tile determina as dimensões do mosaico. É importante que você dimensione


corretamente, para não deixar imagens de fora. A fórmula complexa é L = n/5, onde n é
o número de frames e 5 é o número de colunas. Calcule e obtenha o número de linhas.
No caso usei 16.

8 – Adicionando logos

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 8/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
Já dizia o filósofo Abelardo Barbosa: Na internet nada se perde, nada se cria, tudo se
copia. Sites copiando sites, vídeos descaradamente roubados... o mínimo que podemos
fazer é assinar nossos vídeos. E com o FFMPEG isso é bem simples.

Digamos que você tem uma logo do seu site, assim:

Você quer adicioná-la no canto inferior direito do vídeo, redimensionando


automaticamente para ocupar 25% da largura. E com uns 30% de opacidade. (ou 70% de
transparência, dá no mesmo). O comando é:

ffmpeg -i kennedy.mp4 -i watermark.png -filter_complex "


[1:v]boxblur=5:1,scale=iw*0.30:-1,format=argb,colorchannelmixer=aa=0.3[logo];[0:v]
[logo]overlay=W-w-10:H-h-10[out]" -map "[out]" -map 0:a -c:a copy saida.mp4

1.00

00:00 02:05

No caso o arquivo kennedy.mp4 será convertido para saída.mp4, com adição da logo
watermark.png, dimensionada em 30% (comando scale=iw*0.30) e com opacidade
(aa=0.3) de 30% também.

9 – Criando gifs animados


GIF animado é uma abominação, um resquício dos primórdios da Internet, que
infelizmente todo mundo usa, já que achamos banda no lixo, provavelmente. Então, se

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 9/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
quiser criar um gif animado, com o FFMPEG é extremamente simples, só lembre-se que
é um formato muito ineficiente, os arquivos ficam gigantescos.

Um truque é reduzir (muito) a framerate, e o tamanho. Então, o comando:

ffmpeg -i input.mp4 -vf "fps=6, scale=-1:500,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse"


-loop 0 output.gif

vai converter os primeiros 10 segundos do vídeo input.mp4 em um gif animado de nome


output.gif. A framerate, -fps é de 6 quadros por segundo, e a escala reduz
proporcionalmente o vídeo para 500 pixels de altura. Eis o resultado:

OK, eu trapaceei. O arquivo resultante tinha mais de 4MB, o comando usado cria GIFs
com qualidade máxima. Para obter GIFs com qualidade (e tamanho) bem inferior, use:

ffmpeg -i input.mp4 -ss 0 -t 10 -vf "scale=-1:500" -r 6 output.gif

O GIF acima foi otimizado via GifSicle, um pequeno utilitário que faz mágica, tipo uma
Fiorino com escada.

10 – Efeito Jornal Nacional de vídeo vertical

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 10/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
Infelizmente o povão adora vídeo vertical, aí fica desesperado movendo o celular pros
lados, tentando enquadrar algo que se encaixaria de forma perfeitamente confortável
em um vídeo horizontal, mas como não tem jeito, muito programa de TV escolheu uma
técnica onde o vídeo vertical é mostrado no centro da tela, e para não ficar com colunas
laterais pretas, exibem uma versão borrada do vídeo nas laterais.

Esse efeito é trivial com o FFMPEG:

ffmpeg -i vertical.mp4 -vf split[original][copy];


[copy]scale=ih*16/9:-1,crop=h=iw*9/16,gblur=sigma=20[blurred];[blurred][original]overlay=
(main_w-overlay_w)/2:(main_h-overlay_h)/2 output_hor.mp4

1.00

00:00 00:01

Ele cria um vídeo output_hor.mp4 em proporção 16:9, usando como base o vídeo
vertical.mp4. Simples assim. Eis o resultado:

11 – Converter vídeo horizontal para formato


vertical
Eu não vou ensinar isso.

FFMPEG – Como instalar


Passo 1:

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 11/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
O site oficial é ffmpeg.org. Na área de downloads, você vai achar executáveis para Linux,
Mac e Windows. Para Windows há dois links principais. Eu sugiro que você vá no do
BtBN, que levará até esta página do GitHub, onde você poderá baixar o arquivo ffmpeg-
master-latest-win64-gpl.zip.

Passo 2:

Crie uma pasta chamada FFMPEG na raiz do disco C:\

Passo 3:

Abra o zip, você vai achar as pastas bin e doc. Copie ambas para a pasta c:\FFMPEG.

Passo 4:

Clique na área de pesquisa na barra de tarefas do Windows, digite Powershell. Ele abrirá
uma janela parecida com esta. Clique na opção “Executar como Administrador”.

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 12/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit

Opção devidamente sinalizada (Crédito: Editoria de Arte)

Passo 5:

Na janela da PowerShell, digite o comando:

setx PATH "%PATH%;C:\ffmpeg\bin" <enter>

Passo 6:

Feche a janela, abra uma janela do DOS comum e digite:

ffmpeg -version

Se tudo der certo você verá uma tela assim e o FFMPEG estará devidamente instalado
em seu sistema.

FFMPEG instalado corretamente. (Crédito: MeioBit)

Conclusão
Nem chegamos a arranhar as possibilidades do FFMPEG, as chances são que se você
conseguir imaginar, ele consegue fazer, em se tratando de vídeo. Uma busca no Google,
leitura da documentação ou até uma leve trapaça, perguntando ao ChatGPT se algo é
possível, e você estará automatizando seus processos quase como mágica.

E sim, o FFMPEG tem integração com quase toda linguagem que você imaginar, mas um
bom e velho bash ou batch já resolvem a maioria das necessidades.

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 13/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit

Leia mais sobre: ferramentas, FFMPEG, Tutorial.

relacionados

Resenha: Estabilizador / Vendas de fitas cassete 2 milhões de pessoas


Gimbal P6A - Uma grata explodiram durante a ainda alugam DVDs na
surpresa pandemia. Por quê? Netflix

comentários

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 14/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit
O que você achou?
4 Respostas

Curti Ri Amei Surpreso Chateado Triste

4 Comentários 
1 Entrar

G Participe da discussão...

FAZER LOGIN COM OU REGISTRE-SE NO DISQUS ?

Nome

 1 Compartilhar Mais votados Mais recentes Mais antigos

Careca Voador − ⚑
2 horas atrás

Sensacional. Agora faz um com Ghostscript! hahahaha, sacanagem. Valeu, Cardoso, mais
um post incrivelmente útil.

0 0 Responder • Compartilhar ›

Super_Yoda − ⚑
4 horas atrás

Excelente artigo e com um excelente título! 😀


Apenas para mencionar, além do FFMPEG eu também mantenho instalado o incrível
ImageMagick que serve para manipulação de arquivos de imagens:

https://imagemagick.org/script/index.php

0 0 Responder • Compartilhar ›

F Flavio Viana − ⚑
10 horas atrás

No Windows 10/11, simplesmente abra o prompt de comando e digite:


winget install ffmpeg

0 0 Responder • Compartilhar ›

Hil D i l Gil ⚑

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 15/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit

destaques

Nvidia: GPUs GeForce respondem por só


18% da receita

Left 4 Dead: a bagunça que


deu incrivelmente certo

Framerate – o osso mais


anacrônico que ninguém
quer largar

Agent: o provável sucesso,


que nunca existiu

Melhor Coreia lança


satélite espião e explode
foguete

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 16/17
11/28/23, 9:22 AM Tutorial: FFMPEG – 0 canivete suíço da manipulação de vídeos - Meio Bit

ciência games mobile hardware engenharia entretenimento

sobre o meio bit fale conosco anuncie

Meio Bit © 2023 – Todos os direitos reservados. Design e código

https://meiobit.com/462885/tutorial-ffmpeg-0-canivete-suico-da-manipulacao-de-videos/ 17/17

Você também pode gostar