Uma vez que hoje saiu o Ubuntu para Tablets (veja a notícia aqui), resolvi criar um gif através do Vídeo promocional que está no Youtube. O resultado foi o gif animado apresentado ao lado. Você pode ver o mesmo gif animado mas com tamanho maior aqui.
Como consegui fazer este gif? Veja a seguir os vários passos (simples!) que fiz para conseguir tal resultado.
1. Download do vídeo do Youtube
A primeira coisa que é preciso fazer é o download do vídeo do Youtube. Para fazer download de vídeos do Youtube eu recomendo a utilização da extensão FlashGot que é referida neste artigo.
Por isso, para fazer download, acedi ao link do youtube que contém o trailer do Ubuntu for Tablets e depois cliquei no botão do FlashGot tal como se pode ver na imagem abaixo à esquerda. Depois disso, abriu uma janela igual à da imagem abaixo à direita e fiz download da versão HD do vídeo.
No final do download, renomeei o ficheiro para video.webm
2. Converter um vídeo para GIF
Para converter um intervalo de tempo do vídeo para um gif, utilizei o comando ffmpeg, que basicamente é uma das melhores ferramentas que conheço para edição de vídeos via terminal. Infelizmente, tal como acontece com o Gnome, a Canonical criou um fork chamado LibAV do FFmpeg, portanto em breve não teremos acesso ao FFmpeg (Mais um cartão vemelho para a Canonical ).
Nesse comando utilizei a flag "-pix_fmt rgb24" necessária para utilizar cores que o formato GIF aceita. Para além disso, utilizei também a flag "-ss 00:00:00" e "-t 00:00:07" que indica respetivamente: o início do intervalo; o tamanho desse intervalo. Ou seja, ele começa no minuto 0 e termina de gravar 7 segundos depois. Se fosse necessário ir ao nível dos milisegundos podia-se usar o seguinte "00:00:07.300".
Ou seja, o comando que utilizei para passar o ficheiro do video (que anteriormente tinha renomeado) para gif, foi o seguinte:
ffmpeg -sameq -ss 00:00:00.0 -t 00:00:07 -i m.webm -pix_fmt rgb24 output.gif
O resultado desta execução é um ficheiro GIF não otimizado com um tamanho consideravelmente grande: cerca de 180MB (repare-se que isto é um ficheiro com 7 segundos e o video tinham 4 minutos e ocupava apenas 69 MB):
3. Otimização do ficheiro GIF
Para otimizar o ficheiro GIF de forma a torná-lo consideravelmente mais pequeno, utilizei o comando convert, que pertence à suite ImageMagick que vem já instalada por padrão no Ubuntu.
Nesse comando, para otimizar ficheiros GIF, basicamente utiliza-se a Flag "-layers Optimize". Assim, executei o seguinte comando que gerou um ficheiro chamado "output_optimized.gif" e que tem um tamanho de apenas 1MB:
convert -layers Optimize output.gif output_optimized.gif
4. Redimensionar o ficheiro gif
O resultado do passo anterior é um ficheiro gif otimizado mas com um tamanho grande, o tamanho do vídeo, ou seja 720p. Ora para redimensionar o ficheiro para algo mais pequeno utilizei tambem o ImageMagick mas desta vez com uma nova flag de redimensionamento (-resize), que pode receber um ou dois argumentos, que é a largura e a altura. Como eu queria que ele mantivesse o rácio, dei-lhe apenas uma largura de 250px.
Assim, voltei a pegar no comando anterior e acrescentei essa flag:
convert -layers Optimize output.gif -resize 250x output_optimized_resized.gif
5. Aumentar a velocidade do gif
O gif resultante, tem a uma velocidade lenta. Consideravelmente abaixo da velocidade do vídeo. Ora para ver a que velocidade é que esse gif anda, executei este comando:
identify -verbose output_optimized2.gif | grep Delay
O resultado foi mais ou menos o seguinte:
Ou seja, cada frame tem duração "1x100", ou seja: de 100 partes de segundo. Para diminuir este valor, basta executar este comando:
convert -delay 1x20 output_optimized_resized.gif output_optimized_faster.gif
Conclusão
No final fiquei com os ficheiros da imagem abaixo, aos quais fiz upload de 3 deles, os mais pequenos claro: