Screencast - Gravando seu Desktop com FFmpeg

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

[ Hits: 9.905 ]

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

Editor HTML BlueGriffon com dicionário Português do Brasil

Instalando um localizador de aplicações avançado no seu sistema

Criando playlist de músicas MP3 manualmente

Instalando o CPU-X no Debian

Reiniciando com Ctrl+Alt+Del em qualquer GNU/Linux

Leitura recomendada

Conflito na tecla F10 para sair do MC (midnight commander) dentro do Gnome

Usar o WoeUSB-ng no Debian para criar um pendrive bootável

lshw - Gerando relatório HTML de seu hardware

Ordenando uma lista de IPs (IPv4) com o sort

Comando em máquina remota

  

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