Como incrementar rapidamente a sua biblioteca de codecs de vídeo para FFmpeg

O FFmpeg é um framework multimídia líder, dentro do universo GNU/Linux, para lídar com imagens, vídeo e áudio.

Sua função é permitir a codificação, decodificação, transcodificação, realizar tarefas complexas de mux, demux, fluxo (streaming), aplicar filtros etc.

Em outras palavras, o FFmpeg é um software concebido para manipular arquivos multimídia, de qualquer tipo, que tenham sido criados.

De acordo com o manual do utilitário, ele oferece suporte aos formatos — desde os mais obscuros e antigos — até os mais novos e avançados.

Muitas pessoas usam o FFmpeg sem saber, através de softwares GUI — que invocam as funcionalidades do FFmpeg, por baixo, sem que o usuário perceba — tal como o Kdenlive e outros programas conhecidos para edição de vídeo e áudio.

Se você preferir, contudo, pode invocar o FFmpeg da linha de comando de um terminal e realizar as tarefas por si mesmo, sem a necessidade de instalar qualquer outro programa — até por que, usualmente, o FFmpeg já vem instalado no Linux.

Neste site, tenho vários artigos que ensinam truques para usar o FFmpeg na edição de arquivos de áudio e vídeo, direto na linha de comando.

Editar vídeo e áudio na linha de comando pode ser um pouco “sem graça” para muitas pessoas, mas há algumas vantagens e bônus para esta abordagem.

A edição na linha de comando pode ser mais ágil e sempre usa menos recursos do seu sistema na execução das tarefas.

Um exemplo de atividade que só é possível realizar na linha de comando, seria a aplicação de vários filtros simultaneamente a um vídeo, para gerar vários arquivos resultantes da ação.

Desta forma, posso obter vários vídeos, prontos ao mesmo tempo, para analisar (e escolher qual fica e quais eu jogo fora). Na GUI, eu seria obrigado a aplicar um filtro de cada vez.

O pacote Extra58 do FFmpeg

A libavcodec-extra58 é um metapacote de bibliotecas feitas para o FFmpeg. Existe a versão “não extraordinária” — chamada libavcodec58, que conflita com esta aqui. Portanto, instale apenas uma.

O metapacote, traz uma série adicional de bibliotecas de codecs de codificação/decodificação de áudio e vídeo. Contém os seguintes codecs:

  • OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band (codificador/decodificador)
  • OpenCORE Adaptive Multi-Rate (AMR) Wide-Band (decodificador)
  • Android VisualOn Adaptive Multi-Rate (AMR) Wide-Band (codificador)

O segundo metapacote (metapackage) é o libavcodec-extra que, na verdade, depende do primeiro. Ou seja, basta instalar este. No Debian, o comando fica assim:

sudo apt install libavcodec-extra
Instalação do libavcodec-extra, biblioteca de codecs para FFmpeg.

A biblioteca nova já estará configurada e pronta para usar, logo após a instalação.

Baixe e instale centenas de perfis ou styles para DarkTable

O DarkTable, tal como os outros editores de imagens desta categoria (RawTherapee, LightRoom etc.), também tem suporte a aplicação de filtros pré-ajustados.
No DarkTable, este recurso é chamado de styles ou “estilos” — mas é a mesma coisa.

Perfis, pré-ajustes, presets, filtros etc. podem ser baixados de uma só vez, do site https://dtstyle.net.

Você pode baixar um a um, apenas os estilos que gosta, ou pode trazer todos dentro de um pacote.

imagem do site dtstyle.net

Para baixar todos, clique no botão “download all“, no topo da página.

Firefox dowload box

Por fim, descompacte o arquivo baixado na pasta de sua preferência.

Em seguida, volte ao DarkTable e, dentro do painel styles, clique no botão Import.

Relação de arquivos de estilo para DarkTable

Vá até a pasta, dentro da qual extraiu todos os presets e selecione todos. Clique em Open.

Darktable lighttable

Agora a relação de estilos já deve estar visível no painel.

Leia mais sobre o DarkTable.

Razões para editar vídeos na linha de comando.

Certas situações podem parecer coisa de maluco, quando ouvimos pela primeira vez.
Ao olhar por outra perspectiva, é possível descobrir que fazem mais sentido que inicialmente.

O Linux é um ambiente estável, poderoso e amigável para softwares de edição de vídeo.
Algumas ferramentas de edição GUI (interface gráfica) já foram usadas em produções cinematográficas importantes.

E é comum apenas pensarmos em softwares GUI para realizar este tipo de trabalho. Afinal você “precisa ver o que está sendo feito no seu vídeo”, não é?

Uma das maiores justificativas para se usar o ambiente gráfico é o WYSIWYG (What You See Is What You Get), ou seja, “o que você vê é o que vai obter”.
O meu argumento, neste texto, é que se você já sabe de antemão o resultado do procedimento ou deseja ter várias mídias produzidas simultaneamente e rapidamente, a CLI (linha de comando, terminal) é a melhor resposta.

Nem sempre as ferramentas GUI exibem em tempo real os procedimentos aplicados ao seu trabalho. Além disso, elas podem ser bastante lentas — por que toda a interface gráfica do programa está disputando recursos e tempo de processamento preciosos com as tarefas que você precisa realizar.

Ao exportar um arquivo de mídia, fazendo conversão de formatos, usualmente, a interface fica “congelada” na janela da barra de progresso.

A depender da complexidade da tarefa, todo o seu sistema pode ficar indisponível até a devida conclusão da tarefa.

Se eu preciso citar um caso real, lá vai…

Recentemente eu queria obter um trecho de vídeo em câmera lenta. Só que não sabia se o ideal seria 25%, 50% ou algum outro valor intermediário em relação à velocidade original.

Portanto, eu queria 3 amostras de vídeo — inclusive para enviar pelo Telegram e obter outras opiniões.

Queria também reproduzir todos os 3 vídeos simultaneamente, lado a lado, na minha tela, para analisar e, eventualmente, fazer minha escolha.

Geralmente, para produzir 2 (ou mais) vídeos com velocidades de reprodução variadas, em uma ferramenta gráfica, será necessário fazer um de cada vez.

Neste caso, a CLI permite a abertura de vários terminais e você pode executar as tarefas simultaneamente, cada qual em seu terminal.

Na CLI, o seu sistema dificilmente ficará indisponível, enquanto você converte um ou mais vídeos.

É possível criar scripts ou arquivos em lote (batch files) com as sequências de comandos necessárias.

No final, você pode ter inúmeros resultados para analisar detalhadamente e decidir o que te agrada mais — e, se quiser, apagar o restante.

Não precisa ser radical, claro…

Use as duas metodologias para solucionar seus problemas.
Use a GUI aonde sente que ela pode ser mais produtiva. E use a CLI aonde ela couber melhor.

Às vezes a CLI é apenas o jeito mais divertido de executar o trabalho.
E quando a diversão entra por uma porta, a produtividade sai pela janela… sei como é isso. 🙂

Embora eu faça muito pouca edição de vídeo (e nem sou profissional desta área tão fascinante), os 2 casos que citei são aqueles em que (atualmente) mais uso a CLI: aplicar o slow motion em vídeo e fazer a conversão.

Nestes e em muitos outros casos, a CLI me ajuda a obter rapidamente vários arquivos finais — para que eu possa fazer as minhas escolhas.

Como sugestão final, guarde exemplos de comandos em um arquivo texto, que você possa copiar e colar no terminal — fazendo apenas a substituição dos nomes dos arquivos e dos parâmetros de execução dos procedimentos.

Como estabilizar vídeo com o ffmpeg

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:

  1. 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).
  2. 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.
  3. 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:

Imagem original de vídeo ffmpeg
Vídeo original: beija1.mov

Veja um exemplo do mesmo quadro do vídeo após a estabilização:

Imagem de vídeo com estabilização cropada
Vídeo final: beija1-stab.mov

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:

  1. Dicas de uso do ffmpeg: https://elias.praciano.com/?s=ffmpeg+vídeo
  2. Dicas de edição de vídeo: https://elias.praciano.com/tag/edicao-de-video/
  3. Dicas de edição de imagem: https://elias.praciano.com/tag/edicao-de-imagem
  4. Dicas relacionadas à câmera Canon T6 ou EOS 1300D: https://elias.praciano.com/tag/canon

Conheça esta ferramenta online de conversão de arquivos de imagem RAW.

Com suporte a arquivos RAW produzidos por câmeras das marcas Nikon, Canon, Sony, Fujifilm etc. o site raw.pics.io permite fazer upload de suas imagens originais (em formato RAW), converter e baixar no formato de saída à sua escolha.
Na verdade, o serviço não “converte”, mas extrai as imagens JPEG, já contidas nos arquivos RAW.

A partir daí, você pode baixar neste mesmo formato ou converter para PNG (Portable Network Graphics).
Opcionalmente, o serviço permite também fazer edições básicas online, como você pode ver no decorrer deste artigo e nas imagens ilustrativas.

Existe a versão gratuita (com limite de imagens para trabalhar) e a versão paga e sem limite.
Na versão paga, é possível realizar uma conversão em lote de dezenas de imagens, todas de uma vez, o que pode trazer benefícios profissionais a quem esteja longe do seu computador de trabalho e precisa entregar imagens em JPEG, por exemplo.

Como funciona o raw.pics.io

Acesse o site https://raw.pics.io/ e faça o upload dos arquivos de imagem RAW desejadas.
home page do site raw.pics.io

Também é possível arrastar direto do seu gerenciador de arquivos.
seleção de arquivos no gerenciador de arquivos

Várias imagens podem ser selecionadas para upload, de uma vez só.
Esta possibilidade contribui para agilizar o trabalho.

O app possui um painel à esquerda com opções gerais relacionadas aos arquivos.
tela do site raw.pics.io

No painel direito, a tela principal exibe informações sobre o arquivo, obtidas das meta tags exif.
site raw.pics.io

O aplicativo ainda permite edição online das suas imagens — não é “grande coisa”, mas quebra um galho.
web para edição de imagens online

Preço do serviço

Existe uma cobrança única, para um mês de conversões ilimitadas, de aproximadamente 2 dólares.
Este valor é ótimo para quem só deseja usar o serviço uma vez, por um dia ou algumas semanas.
preço do raw.pics.io
Se você acredita que vai precisar usar o serviço por mais tempo, pode optar pelo pagamento anual que, neste momento, é menos que 20 dólares.

Conclusão

Achei o serviço muito simples de ser usado e muito rápido, mesmo em uma conexão lenta (testei fora do escritório, usando uma conexão 4G do celular).
Com esta possibilidade, não é necessário abrir mão de fotografar em RAW, quando se está viajando e precisa entregar uma grande quantidade de fotos em um formato de leitura mais universal, como é o caso do JPEG.
O valor, pelo uso do serviço durante um mês, também está longe de poder ser considerado absurdo.
O que você acha?