Bem-vindo: Qui, 28 de Março 2024, 14:42 Pesquisa avançada

MakingOf: GIF do Ubuntu for tablets, com um vídeo do Youtube

Escreveu alguma aplicação ou script que quer partilhar? Ou conhece algo que quer partilhar? Sabe alguma linguagem de programação e quer partilhar esse conhecimento com um tutorial? Tem alguma dúvida em alguma linguagem? Então este é o sítio certo.

MakingOf: GIF do Ubuntu for tablets, com um vídeo do Youtube

Mensagempor Claudio Novais » Ter, 19 de Fevereiro 2013, 23:14

Imagem

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 :notOK: ).

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:


Referências:



Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Voltar para Scripts, programação e aplicações em desenvolvimento

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 45 visitantes

cron