Convertendo arquivos mov para mp4 no macOS
Por volta de 2018, descobri um produto chamado Gifox. Foi a primeira vez que eu vi um software de captura gerar gifs com tamanha qualidade. Até hoje, a animação exibida no readme.md da Glorious Demo — biblioteca open source que eu criei também naquele ano — continua sendo a que criei usando o Gifox.
Durante os anos seguintes, o Gifox foi a ferramenta utilizada para criar diversos gifs que ilustravam muitos dos meus posts. Nada como uma curta animação mostrando o passo-a-passo necessário para alcançar o resultado descrito no texto. Sou apaixonado por palavras, mas devo confessar que o poder da comunicação visual é avassalador.
Tudo isso começou a mudar enquanto navegava pelo blog de um outro produto magnífico chamado Resend. Ao me deparar com algumas animações que demonstravam o uso do produto, inspecionei o documento para tentar descobrir com qual ferramenta tinha sido gerada a animação. Fiquei então surpreendido ao constatar que a animação não era um gif
, mas sim um vídeo mp4
. Comecei a pesquisar sobre a tag <video>
e fiquei novamente surpreendido, dessa vez pelo tamanho do meu atraso em relação a essa tecnologia que, há pelo menos 10 anos, já é suportada por todos os grandes navegadores.
Após descobrir facilmente como capturar a tela do meu computador obtendo o resultado final em vídeo, comecei algumas experiências. Foi aí que surgiu o primeiro problema. A captura padrão do macOS gera vídeos somente no formato mov
. Além de grandes em tamanho — poucos segundos de captura resultam em dezenas de MB, os vídeos mov
não são suportados nativamente pelos navegadores. É aí que entra em cena a ferramenta de linha de comando chamada ffmpeg. Além de ser gratuita, ela converte mov
em mp4
de uma maneira rápida e fácil.
Instalando o ffmpeg
A ferramenta está disponível via homebrew e pode ser instalada com o seguinte comando:
brew install ffmpeg
Convertendo mov to mp4
A conversão mais simples possível pode ser feita com o seguinte comando:
ffmpeg -i "{filename}.mov" -vcodec h264 -acodec mp2 "{filename}.mp4"
Como é possível notar no comando, o codec de vídeo utilizado na conversão será o h264 e o codec de áudio o mp2. Diversas outras opções podem ser passadas para o comando e podem ser conferidas na documentação oficial da ferramenta
Redimensionando o vídeo
Ao capturar a tela do mac, grandes são as chances de o vídeo gerado ter uma resolução muito maior do que a necessária. Para estes casos, a opção -vf scale
cai como uma luva:
ffmpeg -i {filename}.mov -vf scale="720x406" {filename}.mp4
Reduzindo o tamanho do vídeo em 99,6% com ffmpeg
No comando acima, o vídeo será redimensionado para 720px
de largura.
Removendo o áudio
Por fim, se a intenção do vídeo é ilustrar algum passo-a-passo descrito num post, a faixa de áudio pode não ser necessária. Ao usar a flag -an
, a faixa de áudio será removida na conversão:
ffmpeg -i {filename}.mov -vf scale="720x406" -an {filename}.mp4
Dica: Para que o vídeo seja apresentado de maneira similar a uma animação gif, é necessário acrescentar alguns atributos à tag <video>
. São eles: autoplay
, loop
, playsinline
, e muted
. Se você estiver se perguntando por que é necessário usar o atributo muted
mesmo no caso de vídeos que não tenham faixa de áudio, a resposta é que os navegadores não iniciam automaticamente a reprodução de vídeos que não estejam explicitamente "mutados".
Saiba mais: Se o que você precisa é demonstrar algum trecho de código em ação, talvez você não precise nem de gif
nem de mp4
. Glorious Demo é uma biblioteca JavaScript que permite a criação de animações que simulam o editor e o terminal. O resultado é apresentado em HTML/CSS puros. Se você ficou curioso, visite o site oficial da biblioteca: gdemo.compilorama.com.