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. Às vezes é possível combinar os métodos e estabilização, para obter resultados ainda melhores.
Se for para usar apenas um, 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.

A estabilização do vídeo pode ser realizada de diversas formas, como afirmei no começo.
Quando ela é mecânica (física):

  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 dentro das lentes, quando se trata de uma câmera profissional que permite a troca deste acessório. 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 final da sua filmagem é 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 obter um resultado ainda melhor se acrescentasse o recurso de estabilização por software ao meu vídeo.

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

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’. Veja como é simples.

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.

Conclusão

Se achar interessante, pressione Ctrl+D para guardar esta página nos seus favoritos, para uma futura referência sobre o assunto.
Para o meu caso, o valor do smoothing mais adequado foi 600. Veja o que é melhor para você aí.

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

Faça edição de vídeo e áudio com o Shotcut.

O Shotcut é um editor de vídeos livre, multiplataforma e de código aberto.
Você não precisa pagar nada por ele e pode rodar no Windows, Mac e Linux.

Seus principais atrativos incluem suporte a múltiplos formatos de arquivos de vídeo e a resoluções em 4K.
A lista segue:

  1. Graças ao FFMPEG, tem suporte a formatos de atuais de áudio e vídeo.
  2. Permite trabalhar com imagens no formato BMP, GIF, JPEG, PNG, SVG, TGA, TIFF etc.
  3. Não necessita importar vídeos. Ele oferece edição nativa da timeline.
  4. Sistema de buscas precisa para vários formatos de arquivos de vídeo.
  5. Captura da sua webcam.
  6. Captura do áudio do seu PC/laptop.
  7. Capacidade de reprodução do fluxo da rede (network stream playback — HTTP, HLS, RTMP, MMS, UDP).
  8. Plug ins de geração de vídeo Frei0r — barras coloridas, plasma etc.
  9. Exportação de EDL (Edit Decision List CMX3600).
  10. Exportação de quadros únicos ou sequências de vídeo.

Vamos falar um pouco mais das capacidade de manipulação de áudio e vídeo do Shotcut… mas, se você já sabe tudo, pode pular para a sessão de instalação, logo abaixo.

Recursos de edição de áudio

O software faz a edição básica do áudio dos seus vídeos, com opções de ajuste do volume, loudness e medição de pico.
Entre os recursos principais, o site (veja links ao final) lista os seguintes:

  1. Filtros de áudio: controle de agudos e graves, compressor, canal duplicado, tempo, expansor, downmix, ganho, high pass, limite, low pass, normalizar, reverberação etc. Se você conhece o Audacity, vai se sentir em casa.
  2. Permite mixagem de áudio sobre todas trilhas.
  3. Apresenta controles fade (in & out) fáceis de usar, para áudio e vídeo, direto na timeline.
  4. Gerador de tons.
  5. JACK transport sync
  6. Transições de dissolução cruzada (cross-fade) de áudio e vídeo em sobreposição de tomadas na mesma trilha da timeline.

Efeitos de vídeo

O aplicativo tem opções de composição sobre as trilhas de vídeo aceita o HTML5 como fonte de vídeo e de filtros.
Segue a relação de principais recursos de efeitos visuais do Shotcut:

  1. Controles de correção de cores e graduação para sombras, tons médios e claros.
  2. Desentrelaçamento e rotação automática.
  3. Ferramenta “conta-gotas” de seleção de cor natural para fazer o balanço de branco adequado.
  4. Transições de vídeo: barra, portais, caixa, radial, íris, matrix etc.
  5. Acompanhamento de modos de composição ou mistura.
  6. Filtros prontos de vídeo e efeitos de velocidade para clips de áudio/vídeo.

Recursos de edição

O programa inclui ferramentas básicas de edição e várias avançadas.
Entre as principais, citam-se:

  1. Operações de corte, exclusão e colagem.
  2. Controles de ocultar, travar e emudecer a trilha.
  3. Suporte a múltiplas trilhas, com thumbnails.
  4. Desfazer/refazer ações ilimitado.

Mais recursos interessantes

Além de ser multiplataforma, em relação a sistemas operacionais, pode rodar como aplicativo portátil, a partir de um drive externo.
A interface ao usuário está traduzida para 26 idiomas, inclusive o Português.
Tem suporte a vários dispositivos e métodos de captura de vídeo e áudio, como SDI, entradas HDMI, webcam (Video 4 Linux, PulseAudio etc.

Como baixar e instalar o Shotcut

Usuários Windows e Mac, podem fazer o download dos pacotes de instalação a partir da página oficial de downloads do programa: https://www.shotcut.org/download/.

Usuários Linux, podem instalar via SNAP:


sudo snap install shotcut --classic

Você vai encontrar o pacote SNAP do Shotcut também na loja online: https://snapcraft.io/shotcut.
Leia mais sobre suporte a snap, nesta página.

Como usar o Shotcut sem instalar

Você pode fazer download do pacote Shotcut portable, para sistemas operacionais 64-bit, na página do projeto (GitHun): https://github.com/mltframework/shotcut/releases/.
Há versões para Linux, Mac e Windows.
Se você usa Linux, baixe a versão apropriada e descompacte-a no diretório ou drive (pode ser um pendrive) a partir do qual deseja rodar o programa. Siga o exemplo, abaixo:


tar xvvjf shotcut-linux-x86_64-180306.tar.bz2

Em seguida, basta rodar o executável do Nautilus.
nautilus shortcut

Eventualmente, o sistema irá pedir uma confirmação sobre a execução do programa.
confirmar execução

Depois de confirmado, o Shortcut se abre pronto para começar a trabalhar.
shortcut

Como copiar, cortar e colar trechos de um vídeo no Linux com o ffmpeg

O Linux tem ótimos editores de vídeo gráficos (GUI) e que podem ser usados para copiar trechos de um vídeo.
Neste tutorial, vou mostrar como realizar uma operação de edição — copiar/cortar um trecho de um vídeo e colar em um novo arquivo — usando a linha de comando (CLI).

O objetivo deste tipo de procedimento é criar um outro arquivo de vídeo, contendo apenas o trecho que você selecionou.

No meu exemplo, vou usar o arquivo de vídeo ‘video_original.mp4’, com 1 hora de duração.
Vamos supor que eu esteja interessado apenas em um trecho de 15 minutos, que desejo postar nas redes sociais.
Se o trecho começa aos 34 minutos e 14 segundos, o meu comando ficaria assim:


ffmpeg -i video_original.mp4 -vcodec copy -acodec copy -ss 00:34:14 -t 00:15:00 trecho001.mp4

Entenda melhor o comando:

  • -i — opção input onde é indicado o nome do vídeo (video_original) sobre o qual o procedimento será realizado (ele não sofrerá alterações).
  • -vcodec copy‘ e ‘-acodec copy‘ — indica que os codecs originais de vídeo e áudio serão copiados e mantidos sem alterações.
  • -ss 00:34:14 — indica para iniciar a copia às 00h:34m:14s.
  • -t 00:15:00 — indica a duração da cópia.
  • por fim, fica especificado o arquivo de saída trecho001.mp4.

Se quiser extrair outros trechos, basta repetir o procedimento, alterando os números referentes ao ínicio e à duração.
Depois, se quiser, pode juntar os trechos retirados do arquivo original em um novo arquivo. Veja como:


cat trecho001.mp4 trecho002.mp4 > novo_arquivo.mp4

O procedimento acima costuma funcionar para mim, mas não é muito confiável para ser realizado com todo tipo de arquivo.
Mas, neste caso, sugiro usar um editor GUI, por que ele permite fazer a junção com algum efeito, o que evitaria obter um resultado “cru” e mau acabado.

Qual a vantagem de fazer a edição de vídeo na CLI, se tem tantos ótimos editores gráficos?

Se você executou os procedimentos acima, talvez tenha percebido o quanto foram rápidos e, melhor ainda, quase não consumiram os recursos do seu hardware.
Ferramentas CLI, como o ffmpeg e o avconv (entre outras) são muito convenientes quando temos procedimentos simples para realizar — neste caso, fazer cortes “secos” no vídeo, sem qualquer transição.
Deixe as ferramentas GUI para realizar tarefas mais complexas ou que exijam que você seja mais minucioso.
Sugiro, ainda, guardar esta página no seu menu Favoritos (Ctrl + D). Quando precisar cortar vídeos de novo, basta voltar aqui, copiar, colar o comando e editar seus parâmetros e opções.


Não esqueça de dar uma olhada no tutorial como girar um vídeo com o ffmpeg.

Como girar um vídeo, usando o ffmpeg

O nicho de edição de vídeo, no Linux, está muito bem servido, obrigado.
Há, pelo menos, 10 grandes editores de vídeo GUI (Graphic User Interface), para usar no sistema operacional do pinguim. Cada qual é voltado para um público específico.

Ao contrário do que muita gente sabe, contudo, também é possível fazer edição de vídeo na CLI (ou linha de comando).

Se você tem apenas um pequeno ajuste a ser feito em um arquivo de vídeo, pode ser mais interessante executar um ou dois comandos no terminal — em vez de abrir um programa e ter que aguardar o seu carregamento antes de poder fazer qualquer coisa com ele.

O ffmpeg é um utilitário de edição de arquivos multimídia bastante conhecido.
É possível realizar inúmeras tarefas de edição de vídeo com ele.

Neste post, vou me concentrar em apenas uma destas tarefas: alterar a orientação do vídeo.

Esta é uma demanda muito comum para quem grava vídeos com o celular ou uma câmera profissional, na horizontal.

No caso da maioria das câmeras, a posição horizontal é a natural e é a que se identifica com o formato de cinema e das TVs.

Mas se você deseja subir seu vídeo para as redes sociais, pode ser mais interessante usar um formato vertical.

Nos exemplos, que seguem, vou usar “origem.mp4” como nome do meu arquivo de entrada. O “destino.mp4” é o arquivo de saída, resultante da edição.

Substitua os nomes dos arquivos dos exemplos pelos seus.

Para alterar a orientação do vídeo verticalmente:


ffmpeg -i origem.mp4 -vf vflip -c:a copy destino.mp4

Para alternar horizontalmente:


ffmpeg -i origem.mp4 -vf hflip -c:a copy destino.mp4

Para girar 90 graus, no sentido horário


ffmpeg -i origem.mp4 -vf transpose=1 -c:a copy destino.mp4

Para girar 90 graus, no sentido anti-horário


ffmpeg -i origem.mp4 -vf transpose=2 -c:a copy destino.mp4