Screencast - Gravando seu Desktop com FFmpeg

Publicado por Fernando T. Da Silva em 04/12/2013

[ Hits: 10.154 ]

Blog: http://meumundotux.blogspot.com.br/

 


Screencast - Gravando seu Desktop com FFmpeg



Crie o script videodesk com permissão 755 do chmod e salvo em /usr/local/bin.

Conteúdo:

sleep 6 ; ffmpeg -f alsa -i pulse -f x11grab -s $(xrandr | grep '\*\+' | awk '{print $1}') -r 26 -i :0.0 -acodec ac3 -ab 64k -vcodec mpeg4 -sameq screencast-`date +%d-%m-%Y_%H:%M:%S`.mp4

Execute o script videodesk em uma janela de terminal, após isso, minimize em seguida, para que a linha de comando não apareça no início do vídeo, pois a gravação iniciará após 6 segundos da execução.

Para finalizar a gravação, alterne para a janela de terminal onde foi iniciado o FFmpeg e tecle Ctrl+c, ou para não aparecer a janela de terminal de onde foi iniciado, em uma caixa do tipo Executar, digite o comando killall ffmpeg.

Super dica: você pode parar a gravação do vídeo por teclas de atalho, se você tiver instalado o xbindkeys ou outro programa do mesmo gênero, bastando apenas, acionar as teclas configuradas para o comando killall ffmpeg, onde o encerramento da gravação não aparecerá no vídeo.

Notas

Você pode executar este script várias vezes seguidas sem haver sob-regravação do arquivo anterior, pois, o nome do arquivo gerado, é formado pela data e hora com segundos.

Exemplos:
  • screencast-16-11-2013_17:10:17.mp4
  • screencast-16-11-2013_17:14:11.mp4
  • screencast-16-11-2013_17:20:33.mp4

Este script utilizará, automaticamente, a resolução de tela configurada do seu Desktop. O vídeo criado utiliza o codec MP4V para vídeo e AC3 para áudio, e também, embora não especificado o bitrate de vídeo, utiliza um bitrate em torno de 5000k.

Um screencast de 7 minutos e 9 segundos, sendo reproduzido um MP3 de 4 minutos e um vídeo por 3 minutos durante a gravação, gerou um arquivo de 281 MB de tamanho, ou seja, cada minuto gera 40.14 MB.

Captura do áudio de música ou vídeo

O script captura até o áudio de MP3 sendo reproduzido no computador, mas, para que funcione, você deverá executar o pavucontrol depois de iniciado o FFmpeg, devendo o MP3 estar sendo reproduzido também, senão, não terá como mudar a opção para isto na guia Gravando, que estará totalmente escurecida ou indisponível. Então, esta primeira execução será a sua gravação de teste, depois de configurado a opção certa no pavucontrol, não será mais preciso iniciar o mesmo, já que a mesma fica salva.

No pavucontrol:
  • Na aba Reproduzindo, a barra de progresso deve estar se mexendo, se o som estiver em reprodução.
  • Na aba Gravando, escolha: "Monitor of Áudio interno estéreo analógico".
  • Agora, na aba Gravando, o som que está sendo capturado, a barra de progresso deve estar se mexendo durante a reprodução do MP3 e, quanto maior o volume do áudio, mais ela se movimenta.

Linux: Screencast - Gravando o seu desktop com o FFmpeg

Script em Zenity, para colocar um atalho no menu de programas:

Conteúdo:

zenity --info --text "A gravação iniciará em 6 segundos. Parar: killall ffmpeg."
videodesk

Salve com o nome zscreencast com permissão 755 do chmod em /usr/local/bin.

Ao clicar em OK, a janela do zscreencast será fechada e, após 6 segundos, começará a gravação.

Diminuindo o tamanho do arquivo Screencast

As opções utilizadas no script videodesk, normalmente deixa o arquivo gerado muito grande, mesmo com poucos minutos de gravação, então, vamos converter o mesmo para diminuir o tamanho, mas, usando a mesma qualidade do original no arquivo convertido, onde o mesmo ficará 6x menor.

Por exemplo, um Screencast de 7 minutos e 9 segundos, gerou um arquivo de 281 MB, e usando o Mencoder com a linha de comando abaixo, o arquivo convertido ficará com o tamanho de 46 MB, ou seja, 6x menor.

mencoder -forceidx -mc 0 -noskip -skiplimit 0 -oac mp3lame -lameopts cbr:br=64 -ovc lavc -lavcopts vcodec=msmpeg4v2:vhq -o meuvideo.avi screencast-28-11-2013_21:38:28.mp4

Este comando converte o vídeo para AVI com o formato MP42 (Microsoft MPEG-4 v2) e o codec de áudio utilizado é o MP3, ficando 6 vezes menor o tamanho do arquivo, mas com a mesma qualidade da imagem do original e com som.

Usando o FFmpeg pra converter:

ffmpeg -i screencast-28-11-2013_21:38:28.mp4 -f avi -vcodec msmpeg4v2 -r 26 -b 800K -acodec libmp3lame -ac 2 -ar 44100 -ab 64k video.avi

Foi especificado o valor 800k para o bitrate de vídeo, e o arquivo convertido ficou com 52 MB, maior que o do Mencoder, apesar de a imagem não ter a mesma qualidade do original.

A qualidade fica bem inferior ao original na parte da imagem do vídeo com pixeis visíveis, mas o conteúdo é bem legível, mesmo letras pequenas em menus, sendo os pixeis mais notados em parte de fotos que aparecem no vídeo.

Se for especificando bitrate de vídeo com valor 2000k, a qualidade é muito boa, ficando próxima do original, apresenta pixeis por alguns segundos, que são notados apenas nas partes de fotos, quando foram visualizadas diversas fotos durante o Screencast, onde os mesmos pixeis que aparecem na mesma imagem, somem logo a seguir, sendo repetido o mesmo efeito nas outras fotos.

O Screencast original, tem o tamanho de 281 MB e o arquivo convertido ficou com o tamanho de 107 MB, ou seja, um pouco menos da metade.


Dica também publicada em:
Outras dicas deste autor

Acessar compartilhamento de pastas remotas Windows facilmente pelo IP

Como diminuir sua partição / (raiz) no Linux

Tirando screenshots de vídeos no GNU/Linux

Conky - Configuração personalizada

Instalando a versão mais recente do Firefox no Debian 10 codinome "Buster"

Leitura recomendada

Xscreensaver na inicialização do XFCE4 no Debian Etch Linux

Comando dd para Iniciantes

Como dividir arquivos grandes (split)

sl - Animação no terminal ao errar comando

Ativar memória SWAP no Fedora

  

Comentários
[1] Comentário enviado por albertguedes em 04/12/2013 - 18:51h

Excelente dica :D

Eu no geral uso o recordmydesktop , mas ele só salva em formato ogv e come processador que é triste.
Vantagem que ele seleciona área para gravar, com o ffmpeg e área inteira. Mas nada que um editor de vídeo não resolva.

[2] Comentário enviado por albfneto em 04/12/2013 - 19:44h

excelente. Favoritada.

[3] Comentário enviado por rogeriojlle em 04/12/2013 - 21:19h

variações:

ffmpeg -f x11grab -s 640x480 -follow_mouse 100 -show_region 1 -i :0 -vcodec libx264 -preset ultrafast -qp 0 -y video.mkv


@albertguedes:

-follow_mouse faz o video seguir o mouse, o numeral passado como parâmetro é a distancia mínima da borda antes de movimentar a área capturada
-show_region 1 exibe um quadro para você saber o que está capturando
Acho que isso já ajuda um bocado, se você não puder editar o vídeo, como às vezes eu faço, transmitir a tela ao vivo.

-vcodec libx264 -preset ultrafast -qp 0 isso faz você capturar com praticamente 100% de fidelidade sem comprometer o desempenho do computador durante a captura, depois pode usar:
-vcodec libx264 -preset veryslow -qp 15 para reduzir drasticamente o tamanho do vídeo já capturado (a menos que você tenha um processador ultra rápido, já pode fazer dessa forma já na primeira captura)

o restante das técnicas que uso relacionadas ao áudio são as mesmas citadas pelo autor desse post

com isso, faço screencast sem engasgos usando um AMD E-350 ( que praticamente é um processador de netbook )


https://trac.ffmpeg.org/wiki/x264EncodingGuide


[4] Comentário enviado por Minions em 15/03/2024 - 00:40h

Sabe como resolver esses problemas?

Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Failed to set value '1' for option 'sameq': Invalid argument
Error parsing global options: Invalid argument

ALSA lib pcm.c:2721:(snd_pcm_open_noupdate) Unknown PCM pulse
[alsa @ 0x55605a5941c0] cannot open audio device pulse (No such file or directory)
pulse: Input/output error

[5] Comentário enviado por nandosilva em 15/03/2024 - 21:11h


[4] Comentário enviado por Minions em 15/03/2024 - 00:40h

Sabe como resolver esses problemas?

Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Failed to set value '1' for option 'sameq': Invalid argument
Error parsing global options: Invalid argument

ALSA lib pcm.c:2721:(snd_pcm_open_noupdate) Unknown PCM pulse
[alsa @ 0x55605a5941c0] cannot open audio device pulse (No such file or directory)
pulse: Input/output error



===========================

Na tradução do google diz que: A opção 'sameq' foi removida. e para usar no lugar dela a opção -qscale 0 ou -qscale 1
A sua versão do ffmpeg instalada não utiliza mais a opção sameq, então troque no script esta pela opção qscale




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts