Rafael Camargo

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.