Estabilização de imagens em vídeo pode ser feita de diversas formas, com diferentes métodos. Com frequência, é possível combinar os métodos de estabilização e obter resultados ainda melhores.
O melhor método é aquele feito pelo hardware de filmagem, que compensa as tremidas ou movimentos involuntários da mão de quem está segurando o equipamento.
Ainda assim, ele não é 100% perfeito e pode ser complementado com uma estabilização via software — e é sobre isso que vamos falar neste post.
Métodos para estabilizar imagem de vídeo
A estabilização do vídeo pode ser realizada de diversas formas, como afirmei no começo.
Quando ela é mecânica (física) ou via hardware:
- O sistema (motor) de estabilização pode ficar embutido no corpo da câmera ou filmadora. Neste caso, é comumente chamado IBIS (In Body Image Stabilization, ou estabilização de imagem dentro do “corpo”, em uma tradução livre) ou, ainda, ICIS (In Camera Image Stabilization).
- Alguns fabricantes optam por colocar o sistema de estabilização da imagem nas lentes da câmera. O resultado é o mesmo, mas permite vender câmeras mais baratas e os usuários compram lentes estabilizadas apenas se necessitarem.
- Existe também a opção de usar estabilização tanto na câmera quanto na lente. Os dois sistemas podem trabalhar em conjunto para obter resultados ainda melhores.
A estabilização por software é muito usada em câmeras mais baratas e em celulares (onde não há espaço para embutir um sistema de estabilização físico).
Há também métodos externos bastante eficientes para obter filmes com imagens estáveis e sem tremores indesejados — por exemplo, gimbals, tripés ou apenas apoiar a câmera sobre uma superfície estável.
Neste post, vamos abordar a técnica de estabilização por software. Embora exista programas GUI (de interface gráfica) plenamente capazes de fazer “a mágica”, vamos abordar o procedimento via CLI, com o ffmpeg.
O procedimento é rápido e muito eficiente… mas se você não gosta de digitar comandos, este artigo não é para você.
A estabilização de imagens em vídeo, via software, é realizada através de um corte (cropping), o que vai dar em uma perda na qualidade do resultado final.
Claro que você pode fazer uma estabilização leve e ter menos perda.
Se achar que o impacto na qualidade é aceitável, pode optar por uma aplicação mais pesada do recurso.
A escolha é sua.
Equipamento físico usado na minha filmagem
Só por curiosidade, o equipamento usado na minha filmagem é uma câmera Canon T6 (ou 1300D), com uma lente Canon EF-S 55-250mm f/4-5.6 IS STM.
Neste caso, trata-se de uma lente que possui mecanismo de estabilização de imagem.
O problema é que ao usar o extremo da lente, a estabilização nunca é perfeita. E eu achei que poderia refinar o resultado, acrescentando estabilização por software.
Meu software de estabilização de imagem
Como já ficou claro no título, vamos usar os recursos presentes no ffmpeg, presente na maioria das distribuições Linux e que já tem compilado, dentro de si, a biblioteca para estabilização de imagens de vídeo, libvidstab.
O processo funciona com um recorte na imagem, que cria margem para os lados “absorverem” os movimentos mais abruptos.
O zoom é um dos “efeitos colaterais” do uso deste recurso.
Veja um exemplo de um dos quadros do vídeo original, abaixo:
Veja um exemplo do mesmo quadro do vídeo após a estabilização:
Percebeu a diferença (e o recorte)? Tenha isso em mente: quanto mais estabilização você aplicar, via software, maior será o recorte da imagem em vídeo.
Como aplicar estabilização de imagem a vídeos com o ffmpeg com a biblioteca libvidstab
A ferramenta de edição e manipulação de vídeos, ffmpeg, possui diversos recursos para melhorar o seu trabalho.
Para obter estabilização, use a opção ‘-vf’ com o parâmetro ‘vidstabtransform’.
Este método usa a biblioteca de estabilização do ffmpeg, libvidstab. Se a sua versão não tiver esta biblioteca compilada, vá para o próximo tópico (abaixo), aonde explico uma outra maneira de fazer o procedimento.
Para obter melhores resultados, contudo, recomendo rodar primeiro a detecção de estabilização. Com este procedimento, é criado um pequeno arquivo ‘transforms.trf’, no diretório local, em que os parâmetros e as variáveis de trabalho são registradas.
Veja como eu criei um arquivo transforms.trf em relação ao arquivo de vídeo ‘beija1.mov’ (substitua este nome pelo do seu arquivo, aí):
ffmpeg -i beija1.mov -vf vidstabdetect -f null -
Aguarde o andamento do processo e, em seguida, rode o procedimento de estabilização:
ffmpeg -i beija1.mov -vf vidstabtransform=smoothing=30:input="transforms.trf" beija1-stab.mov
Acima, substitua o nome do arquivo final ‘beija1-stab.mov’, pelo que você achar melhor.
Se não ficar satisfeito com o resultado da estabilização, altere o valor de ‘smoothing=30’ para um número mais alto. Tente 60, 120 etc.
Use o deshake para estabilizar com o ffmpeg
O filtro “deshake” também pode ser usado, como método de estabilização. É bem fácil!
Veja um exemplo:
ffmpeg -i video-original.mp4 -vf deshake video-estabilizado.mp4
No comando, acima, substitua os nomes “video-original.mp4” e “video-estabilizado.mp4” pelo que for mais adequado para o seu caso.Eu falei que era fácil.
Se achar interessante, pressione Ctrl+D para guardar esta página nos seus favoritos, para uma futura referência sobre o assunto.
Conclusão
O uso do deshake permite realizar o trabalho mais rapidamente e costuma ser o suficiente para mim.
A biblioteca libvidstab promove uma estabilização mais eficiente, contudo e costuma ser necessária em casos mais extremos.
Leia mais dicas:
- Dicas de uso do ffmpeg: https://elias.praciano.com/?s=ffmpeg+vídeo
- Dicas de edição de vídeo: https://elias.praciano.com/tag/edicao-de-video/
- Dicas de edição de imagem: https://elias.praciano.com/tag/edicao-de-imagem
- Dicas relacionadas à câmera Canon T6 ou EOS 1300D: https://elias.praciano.com/tag/canon
2 replies on “Como estabilizar vídeo com o ffmpeg”
Show! Uma vez perdi uma semana procurando por isso nas interwebs ..
“Embora exista programas GUI (de interface gráfica) plenamente capazes de fazer “a mágica”, vamos abordar o procedimento via CLI, com o ffmpeg.”
Apesar de eu preferir fazer manualmente fiquei curioso quais GUI fazem isso, na mesma pesquisa que eu mencionei anteriormente a única que eu conseguir foi no Blender .. Pode citar alguma ?
O reprodutor de vídeos padrão do Google Photos faz isso, no seu celular Android.