segunda-feira, 2 de dezembro de 2013

Screencast – gravando o seu desktop com o 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 minimize em seguida para que a linha de comando não apareça no inicio do vídeo, pois a gravação iniciará após 6 segundos da execução. Para finalizar a gravação você depois alterna 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 gerando é formato 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 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 pra que funcione você deverá executar o pavucontrol depois de iniciado o ffmpeg devendo o mp3 está 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 está 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 está se mexendo durante a reprodução do mp3 e quanto maior o volume do áudio mais ela se movimenta.



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 foi 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 fico com o tamanho de 107 MB ou seja um pouco a menos da metade.


Um comentário:

  1. Como posso capturar apenas o áudio que esta sendo reproduzido?

    ResponderExcluir