Gravando área de trabalho em MP4 e depois transformando o vídeo em GIF

Neste meu centésimo artigo mostro como gravar área de trabalho (incluindo o som) com linha de comando e/ou atalhos de teclado, criando arquivos MP4 e, depois, como transformar o vídeo em uma imagem GIF. Artigo simples, mas que pode ajudar muitos usuários.

[ Hits: 3.399 ]

Por: Xerxes Lins em 17/03/2016 | Blog: https://voidlinux.org/


Introdução



Artigo simples que se resume em ensinar como criar um vídeo da sua área de trabalho usando o FFMPEG e depois, opcionalmente, transformar tal gravação em uma imagem GIF. Ideal para fazer screencast e para quem pretende fazer tutoriais usando imagens GIF.

Artigo testado na distribuição SparkyLinux (Debian).

Obs.: precisa ter o programa ffmpeg instalado.

GRAVANDO ÁREA DE TRABALHO COM FFMPEG (TECLAS DE ATALHO)

Obs.: instale o pacote "zenity", pois é necessário para os passos a seguir.

Primeiro, para gravar a área de trabalho faça o seguinte. Crie um arquivo chamado "gravar_desktop" e coloque dentro dele os comandos listados a seguir:

#!/bin/bash
zenity --info --text="Gravação da área de trabalho iniciará 1 segundo após você clicar em OK\!" --title="Aviso!"
sleep 1 && ffmpeg -f alsa -i pulse -f x11grab -s $(xrandr | grep '\*\+' | awk '{print $1}') -r 26 -i :0.0 -acodec ac3 -ab 64k -vcodec mpeg4 -qscale 0 screencast-`date +%d-%m-%Y_%H:%M:%S`.mp4

Após isso mova o arquivo para /usr/local/bin:

sudo mv gravar_desktop /usr/local/bin/

Mude as permissões:

sudo chmod 755 /usr/local/bin/gravar_desktop

Quando quiser gravar a área de trabalho basta usar o comando:

gravar_desktop

Obs.: para encerrar pressione Ctrl+c ou use o comando "killall ffmpeg". Mas veremos uma forma mais elegante de fazer isso a seguir.

Agora para parar a gravação de forma elegante crie um arquivo chamado "para_gravacao" com o conteúdo:

#!/bin/bash
killall ffmpeg
zenity --info --text="FFMPEG encerrado!\!" --title="Aviso!"

Mova-o para /usr/local/bin:

sudo mv para_gravacao /usr/local/bin/

Mude as permissões:

sudo chmod 755 /usr/local/bin/para_gravacao

Agora para parar uma gravação basta usar o comando "para_gravacao".

Porém seria interessante colocar os comandos em atalhos de teclado. Exemplo:
Linux: Gravando área de trabalho em MP4 e depois transformando o vídeo em GIF
Com os atalhos personalizados você pode começar uma gravação com as teclas "Ctrl+Alt+r" e parar a gravação com "Ctrl+Alt+S". Ficou ótimo!

Por fim a gravação será salva na sua pasta pessoal.

TRANSFORMANDO MP4 EM GIF

Para transformar o vídeo em GIF também é muito simples. Basta usar um script que usa o ffmpeg. Para isso crie um arquivo (aqui usarei o nome mp42gif) com o conteúdo a seguir. Os comandos são:

sudo nano /usr/local/bin/mp42gif

Conteúdo:

#!/bin/bash
clear
VIDEO_MP4=$1
echo "Qual tamanho do gif?"
echo ""
echo "1 - Pequeno"
echo "2 - Médio"
echo "3 - Grande"
read TAMANHO
case $TAMANHO in
1) TAMANHO=400 && EXT=pequeno ;;
2) TAMANHO=800 && EXT=mediano ;;
3) TAMANHO=1024 && EXT=grande ;;
*) echo "Opção desconhecida. Saindo..." && exit ;;
esac
clear
echo "Gravar por quantos segundos? (Ex.: 15)"
read TEMPO
clear
echo "Gravando por $TEMPO segundos em tamanho $EXT..."
sleep 2

ffmpeg -ss 00:00:00 -i $VIDEO_MP4 -to $TEMPO -r 30 -vf scale=$TAMANHO:-1 $(echo $1 | cut -f 1 -d '.')_$EXT.gif
echo "Fim do script!"

Obs.: altere o script para as suas necessidades, se quiser.

Após isso, salve o arquivo e mude sua permissão:

sudo chmod 755 /usr/local/bin/mp42gif

Agora sempre que quiser criar um GIF a partir de um vídeo MP4 basta usar o comando:

mp42gif nomedovideo.mp4

E terá como resultado o arquivo GIF com o formato: nome do arquivo + tamanho + .gif. Veja um exemplo:
Linux: Gravando área de trabalho em MP4 e depois transformando o vídeo em GIF

SOBRE A GRAVAÇÃO DO SOM

O som do microfone será gravado com o comando mostrado no começo do artigo. Porém, caso não funcione ou caso você queira alterar a forma de gravação do som, precisará do aplicativo Pulse Audio Volume Control, conhecido também como "pavucontrol" e pode ser baixado pelo apt-get. Com ele você terá acesso aos controles dos microfones do computador.

Faça os testes até obter o som que deseja, seja interno ou externo.

CONCLUSÃO

Há softwares voltados para gravação da área de trabalho como o gtk-recordmydesktop e outros, porém (pelo menos comigo) o desempenho deles não costuma ser satisfatório. Há travamentos e cortes. Meu computador é fraco e o uso de softwares voltados para gravação da área de trabalho normalmente resulta em péssima qualidade. Porém, usando esses comandos do artigo eu consegui contornar os meus problemas. Espero que você também consiga.

Não esqueça de fazer as modificações necessárias nos scripts para o seu gosto. Por exemplo, onde eu determino o tamanho dos GIFs, coloquei os tamanhos 400, 800 e 1024 (para largura). Talvez você queira outros valores. O framerate dos GIFs está em 30 (que significa 30 quadros por segundo), mas talvez você queira algo menor e menos fluido como 5 por exemplo.

Espero ter ajudado!

Fontes:
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

O desenvolvimento da computação gráfica associado ao dos vídeo games

Como escolher sua distribuição GNU/Linux

Onde o GNU/Linux ganha de lavada do Windows

Slackware Current redondo com XFCE

Xubuntu Retrô (ao estilo Space Invaders)

Leitura recomendada

Docker + Cluster DRBD + SQL Server - Database as a Service Utilizando Volumes Replicados

Instalando Zabbix no CentOS 7

Dropbox - Integração em multiplataformas

RSS com o Superkaramba

Clonando HDs pela rede com UDPCAST

  
Comentários
[1] Comentário enviado por fabio em 17/03/2016 - 13:57h

Boa Xerxes. Meus parabéns pelo centésimo artigo!!!

[2] Comentário enviado por xerxeslins em 17/03/2016 - 14:37h


[1] Comentário enviado por fabio em 17/03/2016 - 13:57h

Boa Xerxes. Meus parabéns pelo centésimo artigo!!!


Valeu!

[3] Comentário enviado por hellnux em 18/03/2016 - 10:50h

Hum! Imagine agora aqui no VOL uma sessão de Gifs do desktop =D

[4] Comentário enviado por xerxeslins em 18/03/2016 - 11:03h


[3] Comentário enviado por hellnux em 18/03/2016 - 10:50h

Hum! Imagine agora aqui no VOL uma sessão de Gifs do desktop =D


Tipo assim?

https://www.vivaolinux.com.br/screenshot/Xfce-teste/

:D

[5] Comentário enviado por hellnux em 18/03/2016 - 12:02h


[4] Comentário enviado por xerxeslins em 18/03/2016 - 11:03h


[3] Comentário enviado por hellnux em 18/03/2016 - 10:50h

Hum! Imagine agora aqui no VOL uma sessão de Gifs do desktop =D


Tipo assim?

https://www.vivaolinux.com.br/screenshot/Xfce-teste/

:D


Show! Mas o tamanho deve ser bem superior a uma imagem, não? Aí vai gerar um tráfego maior.

[6] Comentário enviado por xerxeslins em 18/03/2016 - 12:06h


[5] Comentário enviado por hellnux em 18/03/2016 - 12:02h


[4] Comentário enviado por xerxeslins em 18/03/2016 - 11:03h


[3] Comentário enviado por hellnux em 18/03/2016 - 10:50h

Hum! Imagine agora aqui no VOL uma sessão de Gifs do desktop =D


Tipo assim?

https://www.vivaolinux.com.br/screenshot/Xfce-teste/

:D


Show! Mas o tamanho deve ser bem superior a uma imagem, não? Aí vai gerar um tráfego maior.


Pode ser... mas o limite é de 2MB (definido na sessão de screenshots). Enquanto estiver no limite, tá bom.

[7] Comentário enviado por xerxeslins em 18/03/2016 - 15:18h

Mais uma screenshot animada:

https://www.vivaolinux.com.br/screenshot/Xfce-Screen-Animada/
--
https://goo.gl/uu8OUX

[8] Comentário enviado por albfneto em 22/03/2016 - 18:29h

Mais um Favoritado! é muito bom isso!
o Script e o código que colocou no Zenith são seus? vc é o autor do "aplicativo"?
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].

[9] Comentário enviado por xerxeslins em 22/03/2016 - 18:55h


[8] Comentário enviado por albfneto em 22/03/2016 - 18:29h

Mais um Favoritado! é muito bom isso!
o Script e o código que colocou no Zenith são seus? vc é o autor do "aplicativo"?
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].


Olá. Obrigado! O primeiro script é "metade" meu, pois me baseei em um comando que peguei no primeiro artigo citado em fontes. Mas atualizei um parâmetro e adicionei o zenity, que não tinha.

O segundo script, que transforma mp4 em gif pode-se dizer que é meu, pois criei do zero. Mas de todo jeito precisei consultar o comando para converter (segunda fonte).

Abraço!


[10] Comentário enviado por henriquejne em 22/03/2016 - 22:13h

Bom artigo compartilhei no Face brigado...

[11] Comentário enviado por xerxeslins em 23/03/2016 - 06:08h


[10] Comentário enviado por henriquejne em 22/03/2016 - 22:13h

Bom artigo compartilhei no Face brigado...


Onrigado!

[12] Comentário enviado por pietry em 24/03/2016 - 12:59h

muito bom!

[13] Comentário enviado por tibirica em 30/03/2016 - 18:41h

Adorei seu artigo meu nome é Tibiriça Fatuch Leal, me foi muito útil, meu filho trabalha na área de tecnologia e passei para ele esta informação para realizar um vídeo, era o que ele estava precisando. Muito Obrigado!

[14] Comentário enviado por xerxeslins em 30/03/2016 - 22:25h


[13] Comentário enviado por tibirica em 30/03/2016 - 18:41h

Adorei seu artigo meu nome é Tibiriça Fatuch Leal, me foi muito útil, meu filho trabalha na área de tecnologia e passei para ele esta informação para realizar um vídeo, era o que ele estava precisando. Muito Obrigado!


Que bom saber disso! Obrigado pelo comentário!

[15] Comentário enviado por xerxeslins em 08/04/2016 - 10:21h

Estou usando Ubuntu 16.04 e o comando de gravar não funcionou. Parece que em versões mais recentes do Ffmpeg exige uma mudança nos parâmetros do comando. Então, caso o comando de gravar desktop mencionando no artigo não funcione com você, experimente este que funcionou comigo:

#!/bin/bash
zenity --info --text="Gravação da área de trabalho iniciará 1 segundo após você clicar em OK\!" --title="Aviso!"
sleep 1 && ffmpeg -f alsa -i pulse -f x11grab -s $(xrandr | grep '\*\+' | awk '{print $1}') -r 26 -i :1.0+0,0 -acodec ac3 -ab 64k -vcodec mpeg4 -qscale 0 screencast-`date +%d-%m-%Y_%H:%M:%S`.mp4

A diferença é o "-i :1.0+0,0"

Abraço!

https://goo.gl/uu8OUX

[16] Comentário enviado por erisrjr em 14/04/2016 - 13:35h


[1] Comentário enviado por fabio em 17/03/2016 - 13:57h

Boa Xerxes. Meus parabéns pelo centésimo artigo!!!


O Xerxes é o Telemann do VOL, escreve muito e sobre vários assuntos, toda hora "esbarro" em dica dele.
Xerxes, parabéns pela disposição e obrigado por compartilhar o que sabe.

[17] Comentário enviado por xerxeslins em 14/04/2016 - 16:59h


[16] Comentário enviado por erisrjr em 14/04/2016 - 13:35h


[1] Comentário enviado por fabio em 17/03/2016 - 13:57h

Boa Xerxes. Meus parabéns pelo centésimo artigo!!!


O Xerxes é o Telemann do VOL, escreve muito e sobre vários assuntos, toda hora "esbarro" em dica dele.
Xerxes, parabéns pela disposição e obrigado por compartilhar o que sabe.



kkkkkk obrigado!


[18] Comentário enviado por izaias em 29/05/2016 - 18:41h

Xerxes, aqui configurei um atalho para iniciar a gravação (Alt+g) e funciona perfeitamente.
O caminho: /usr/local/bin/gravar_desktop

Ótimo artigo!


Contribuir com comentário