Guia de introdução ao FFMPEG
Olá!
Nesse guia, você terá uma introdução ao FFMPEG, com muitos exemplos práticos, assim poderá ver como essa poderosa ferramenta poderá lhe ajudar no dia a dia com seus vídeos.
O FFMPEG é um conjunto de programas e bibliotecas de software livre e código aberto para lidar com arquivos de imagem, vídeos e áudios dos mais variados tipos, executando operações de reprodução, conversão, cortes e até mesmo aplicando efeitos. É possível realizar todo esse trabalho diretamente pela linha de comando.
Em alguns sistemas operacionais o programa FFMPEG já vem instalado, caso no seu não esteja, verifique na documentação oficial como realizar a instalação no seu SO 😀
Link da documentação oficial: https://ffmpeg.org/download.html
Container vs Codec
Um pouco de teoria antes de entrar na prática 😀
Ao entrar nesse mundo do FFMPEG, você irá se deparar com alguns termos e agora veremos dois (02) deles: Container e Codec.
Basicamente, Container é o formato do arquivo (.mp4, .mp3, .avi, .jpg, etc …) é a caixa onde vai guardar tudo sobre o arquivo (vídeo, imagem, som, etc …). Já o Codec é o programa que vai codificar/decodificar o arquivo, nisso temos vários tipos de Codec para cada tipo de arquivo:
Vídeo: H.264, H.265, MPEG-4, etc …
Áudio: AAC, MP3, Opus, etc …
Como esse é um guia introdutório não vamos entrar em muitos detalhes sobre os Container e Codec mas, se você desejar conhecer mais detalhes sobre isso, comente abaixo que assim pode criar textos bem aprofundados sobre cada 😀
Sintaxe básica

ffmpeg – É a chamada do programa
opcoes_globais – São as opções globais que vão ser aplicadas em todo o produto (Sobrescrever sem perguntar, verbosidade, etc …)
opcoes_arquivo_entrada – Opções do arquivo de entrada (Tempo de início do arquivo, tempo de término, etc …)
-i url_entrada – Caminho do arquivo de entrada
opcoes_arquivo_saida – Opções do arquivo de saída (Codec de vídeo, codec de áudio, etc …)
url_saida – Caminho do arquivo de saída
Informações do arquivo
Para visualizar informações do arquivo utilize o comando abaixo, substituindo o “video01.mp4” pelo caminho do seu arquivo de vídeo, áudio ou imagem:
ffmpeg -i video01.mp4
Executando esse comando você verá uma saída parecida com a minha abaixo mostrando os detalhes do arquivo.
ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13 (Ubuntu 13.2.0-23ubuntu3)
configuration: --prefix=/usr --extra-version=3ubuntu5 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch
=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --en
able-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enab
le-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enab
le-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libv
px --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --ena
ble-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray -
-enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq -
-enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video01.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso6iso2avc1mp41
title : Array Map in 100 Seconds
artist : Fireship
encoder : Lavf60.3.100
Duration: 00:01:40.16, start: 0.000000, bitrate: 444 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 313 kb/s, 29.97 fps, 29.97 tb
r, 30k tbn (default)
Metadata:
handler_name : ISO Media file produced by Google Inc.
vendor_id : [0][0][0][0]
Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name : ISO Media file produced by Google Inc.
vendor_id : [0][0][0][0]
At least one output file must be specified
Conversão simples
Vamos dizer que você tem um arquivo de vídeo .mp4 porém, tem que enviar para algum lugar que somente aceita vídeos no formato .avi, utilize o comando abaixo trocando o “video01.mp4” pelo caminho do seu arquivo de origem e o “video01.avi” para o destino do arquivo convertido.
ffmpeg -i video01.mp4 video01.avi
Ao executar esse comando o FFMPEG irá iniciar o processo de conversão do arquivo, tentando manter a mesma qualidade do arquivo de saída do arquivo de entrada. Dependendo do tamanho do seu arquivo e das especificações do seu hardware esse processo pode ser bem demorado. No resultado do comando você poderá acompanhar o progresso de conversão e finalização.

Cortar um trecho do vídeo
Outra tarefa muito comum para fazer com o FFMPEG é cortar um trecho de vídeo, vamos ver abaixo como cortar os primeiros 10 segundos do vídeo.
ffmpeg -i video01.mp4 -ss 00:00:00 -to 00:00:10 -c copy video_cortado.mp4
-i video01.mp4 – É o caminho do arquivo de vídeo
-ss 00:00:00 – Tempo de início do corte do vídeo no seguinte formato HH:MM:SS
-to 00:00:10 – Tempo final do corte do vídeo no seguinte formato HH:MM:SS, não é o tamanho do vídeo, e sim é a localização do vídeo do corte
-c copy – Informa ao FFMPEG para manter o mesmo codec do arquivo original
video_cortado.mp4 – Caminho do arquivo final convertido
Ao executar esse comando, será exibido os dados do arquivo e irá iniciar o processo de corte do arquivo, dependendo do tamanho do corte e do seu hardware esse processo pode demorar alguns minutos ou horas.
Extrair áudio
Vamos para mais um caso muito corriqueiro no trabalho com vídeos, extração de áudio. Por exemplo, você tem um vídeo de uma música, palestra, etc … E precisa apenas do áudio, sem o vídeo, você pode executar o comando abaixo para fazer a extração apenas do áudio.
ffmpeg -i video01.mp4 -vn -acodec copy audio01.aac
-i video01.mp4 – Caminho do arquivo de vídeo que terá o áudio extraído
-vn – Informa que FFMPEG que não é para processar o vídeo no momento do processamento
-acodec copy – Informa ao FFMPEG que deve ser utilizado o codec original de áudio utilizado no vídeo
audio01.aac – Caminho do arquivo de resultado em formato AAC
Assim como nos outros comandos, dependendo do tamanho do seu arquivo e do seu hardware esse comando pode demorar segundos, minutos ou horas.
Redimensionar vídeo
Existem casos que será necessário fazer um redimensionamento de vídeos, tanto aumentar como reduzir a sua resolução. Vamos ver um exemplo abaixo reduzindo a resolução do vídeo para 240p
ffmpeg -i video01.mp4 -vf scale=320x240 video01_240p.mp4
-i video01.mp4 – Caminho do arquivo de vídeo
-vf – (Video Filter) aplica o filtro no stream do vídeo
scale=320×240 – Largura e altura do vídeo, lembre-se que dependendo do tamanho que for informado pode distorcer o vídeo de resultado
video01_240p.mp4 – Caminho do arquivo de resultado
Transformar frame vídeo em imagem
Para transformar o frame de um vídeo em uma imagem, por exemplo para um thumbnail de um vídeo, você pode executar o comando da seguinte forma:
ffmpeg -i video01.mp4 -ss 00:00:10 -vframes 1 thumbnail.jpg
-i video01.mp4 – Caminho do arquivo de vídeo
-ss 00:00:10 – Tempo do vídeo para extração do frame
-vframes 1 – Informa para o FFMPEG que tem que extrair apenas 1 frame do vídeo
thumbnail.jpg – Caminho do arquivo de resultado
Esse processo normalmente é bem rápido, porém dependendo do seu arquivo e quantos frames você quiser extrair pode demorar segundos, minutos ou horas para finalizar o processo.
Conclusão
Então pessoal esse é o guia básico, BEM BÁSICO MESMO sobre o FFMPEG, com você viu é possível realizar diversas atividades com vídeo, mas também é possível fazer trabalhos com áudios e imagens. Ainda tem muita coisa mesmo que pode ser feita com o FFMPEG.
Caso haja interesse, comente abaixo que posso criar documentos mais aprofundados sobre uma área do mundo do FFMPEG.
Até a próxima 😀
