Introdução
Que o VLC é um dos melhores players de vídeo quase todo mundo sabe, porém ele é capaz de fazer muitas outras coisas além de seu uso habitual. Nesse post iremos usar o VLC para gravar o desktop e capturar vídeos pela webcam.
VLC
VLC é um player multimídia open-source e cross-platform podendo assim ser usado livremente em diversos tipos de sistemas. Esse player suporta vários codecs de vídeos e também de áudio, tornando-o um dos players mais eficientes e fácil de usar.
Esse post não irá explicar como instalar o VLC em sua distribuição, para isso consulte algum material online.
Gravando o desktop com o VLC
Várias operações com o VLC podem ser feitas tanto no modo gráfico quanto na linha de comando. Para gravar o desktop não é muito diferente e irei focar aqui no seu uso na linha de comando. Para saber como gravar o desktop pela interface gráfica, consulte o material [1].
Bem, a idéia geral aqui é abrir o dispositivo screen:// que internamente é reconhecido pelo VLC como sendo a tela da área de trabalho. Então para simplesmente visualizar seu desktop, digite:
$ vlc screen://
Você verá um efeito meio “inception” no player, porque a tela que está sendo gravada está gravando a tela anterior, e assim por diante :)
No mais isso é só visualização e o que queremos é gravar a tela em um arquivo. Pesquisando na Internet, encontrei em [2] um modo simples de fazer isso, porém a solução está para Windows, daí tive que modificar algumas coisas para funcionar no Linux:
$ vlc screen:// --one-instance -I dummy --screen-follow-mouse --no-video :screen-fps=5 :screen-caching=300 --sout "#transcode{vcodec=h264,vb=400,fps=5,scale=1,width=1024,height=768,acodec=none}:duplicate{dst=std{access=file,mux=avi,dst=/tmp/desktopgravado.avi}}"
Veja que /tmp/desktopgravado.avi é o arquivo de saída. O parâmetro -I dummy impede que a interface gráfica do VLC seja aberta, fazendo-o trabalhar somente pela linha de comando.
O parâmetro da opção –sout corresponde as configurações do arquivo de saída, por exemplo, podemos ver que o codec h264 está sendo usado e o que o vídeo terá altura 768 e largura 1024 e um bitrate de vb=400 (aumentando esse valor a qualidade do vídeo aumenta – e o seu tamanho também). Outra opção relacionada com a qualidade do vídeo é a screen-fps=5 que corresponde à taxa de frames por segundo (nesse caso, 5 frames/segundo).
Veja que esses valores podem (e devem) ser mudados pelo usuário em questão de acordo com suas necessidades. Ah, para finalizar o vídeo pressione CTRL+C no terminal para “matar” o processo.
Capturando vídeo pela webcam
Inicialmente teste se o VLC consegue abrir sua webcam para visualização. Digite:
$ vlc v4l2:// :v4l2-dev=/dev/video0
Sendo /dev/video0 o dispositivo associado a sua webcam (o mais comum). Se tudo estiver ok, então vamos capturar um vídeo pela webcam e gravá-lo em um arquivo.
$ vlc -I dummy v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,vb=800}:standard{access=file,dst=/tmp/webcamgravada.mpg}"
Como podemos ver, o vídeo gravado será armazenado no arquivo /tmp/webcamgravada.mpg. As opções de resolução de vídeo agora são passadas diretemente para o módulo v4l2 (:v4l2-width para largura e :v4l2-height para altura).
O parâmetro de –sout corresponde ao codec e qualidade do vídeo. Nesse exemplo usei o codec mpeg4, pois o anterior estava distorcendo muito a imagem da webcam.
Bem, uma coisa que acho útil é gravar a webcam enquanto você vê o que está sendo gravado na tela do VLC. No exemplo acima, enquanto o vídeo é gravado não podemos visualizar a sua captura em tempo real. Então, para gravar a webcam e ao mesmo tempo assistir a gravação na tela do VLC, use o comando abaixo:
$ vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,vb=800}:duplicate{dst=standard{access=file,dst=/tmp/webcamgravada.mpg}, dst=display{}}"
Basicamente retiramos a opção -I dummy para a tela do VLC aparecer e duplicamos a saída do vídeo para o arquivo (dst=/tmp/webcamgravada.mpg) e para a tela (dst=display{}).
Alguma coisa sobre áudio
Como estou usando a webcam interna do notebook (sem suporte a áudio) não é possível capturar o áudio dos vídeos e por causa disso não inclui os parâmetros adicionais para captura de sons nos comandos apresentados.
Se você necessita de uma gravação com áudio, pesquise por algum material online e/ou veja os links das referências.
Referências
[1] How to Record Your Desktop with VLC (Acessado em: Março/2012)
http://2buntu.com/1005/how-to-record-your-desktop-with-vlc/
[2] Screen Capture via command line . please help !! (Acessado em: Março/2012)
http://forum.videolan.org/viewtopic.php?f=14&t=93803
[3] Screen record using VLC – command line – windows xp [closed] (Acessado em: Março/2012)
http://stackoverflow.com/questions/7278087/screen-record-using-vlc-command-line-windows-xp
[4] vlc command line transforming to libvlc (Acessado em: Março/2012)
http://forum.videolan.org/viewtopic.php?f=32&t=82750
Olá, Daemonio, acompanhei todas as suas instruções para efetuar a captura de vídeo por uma webcam e o VLC, mas quando tentei monitorar, recebí a seguinte mensagem:
administrador@dgep-lx-3841:/tmp$ vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=320 :v4l2-height=240 –sout “#transcode{vcodec=mpeg4,vb=800}:duplicate{dst=standard{access=file,dst=/tmp/webcamgravada.mpg}, dst=display{}}”
VLC media player 1.1.4 The Luggage (revision exported)
Warning: call to srand(1349287217)
Warning: call to rand()
Blocked: call to unsetenv(“DBUS_ACTIVATION_ADDRESS”)
Blocked: call to unsetenv(“DBUS_ACTIVATION_BUS_TYPE”)
[0x956f914] main libvlc: Executando o VLC com a interface padrão. Use ‘cvlc’ para usar o VLC sem interface.
Blocked: call to setlocale(6, “”)
Blocked: call to sigaction(17, 0xb73f10d4, 0xb73f1048)
Warning: call to signal(13, 0x1)
Warning: call to signal(13, 0x1)
Warning: call to srand(1348967439)
Warning: call to rand()
Blocked: call to setlocale(6, “”)
(process:3357): Gtk-WARNING **: Locale not supported by C library.
Using the fallback ‘C’ locale.
Warning: call to signal(13, 0x1)
Blocked: call to setlocale(6, “”)
[0x98d40ec] mux_ps mux: Open
Warning: call to rand()
Warning: call to rand()
Warning: call to rand()
[0x98d40ec] mux_ps mux: Close
O VLC Media Player abriu para inciar o monitoramento do que estaria sendo gravado, mas nada foi exibido na sua área de visualização de vídeo…
E no /tmp ficou gravado o arquivo webcamgravada.mpg conforme abaixo:
-rw-r–r– 1 administrador administrador 4 2012-10-03 15:18 webcamgravada.mpg
Poderia dar uma ajuda com o erro ocorrido?
Agradecendo antecipadamente a sua colaboração,
Augusto Cesar
Olá Augusto,
o VLC mostrou corretamente a sua webcam? Utilize o comando:
$ vlc v4l2:// :v4l2-dev=/dev/video0
Veja se a webcam captura imagens corretamente.
Se está tudo normal, tente mudar o codec de saída. No exemplo, usei o mpeg4, mas você pode trocar por outros, como o flv e h264. Uma lista de codecs pode ser vista em:
$ ffmpeg -codecs
Qualquer coisa, poste aqui nos comentários.
Abraços.
Olá,
Desculpe-me pela demora em responder, mas estava fazendo uma série de pesquisas em cima do VLC e da biblioteca vlcj. Finalmente, no Windows XP, conseguí capturar a Webcam com a seguinte linha:
vlc dshow:// –sout=#transcode{vcodec=mp1v,vb=1024,fps=30,width=320,acodec=mpga,ab=128,scale=1,channels=2,,deinterlace,audio-sync}:duplicate{dst=standard{access=file,mux=mpeg1,dst=”.\Output.mpg”},dst=display{noaudio}}
Testando no Ubuntu Linux 12.04, depois de muitos erros apresentados, encontrei na Internet uma explicação para resolver parte do problema: enquanto no Windows o trecho “–sout=#transcode{” não existem espaços, no Linux a sintaxe é “–sout= #transcode{” (deve existir um espaço entre o = e o #)!
O que está ocorrendo é que o VLC não dá erro, exibe o que está sendo capturado pela webcam, mas não grava o arquivo de destino. Estou utilizando a linha abaixo:
vlc v4l2:// :v4l2-dev=/dev/video0 –sout= #transcode{vcodec=mp1v,vb=1024,fps=30,width=320,scale=1,channels=2,,deinterlace,audio-sync}:duplicate{dst=standard{access=file,mux=mpeg1,dst=”/home/administrador/Output.mpg”},dst=display{noaudio}}
Tem alguma idéia do “porquê” desta incompatibilidade na gravação?
Atenciosamente,
Augusto Cesar
Olá Augusto,
realmente não sabia dessa diferença de sintaxe, muito obrigado por avisar.
Agora, no seu caso, também não sei o que está acontecendo. A tela do VLC abre normalmente, mas o arquivo de vídeo não é gerado. Eu atualizei minha distribuição e também o VLC e reparei que os comandos que postei pararam de funcionar. Devo editar essa postagem em breve para adicionar mais informações, mas por enquanto não sei te responder qual o problema.
Se você tiver algum material fonte para referência ficarei feliz em saber.
Obrigado.
Daemonio.
Complicado cara, melhor usar os gravadores disponíveis, kazam, recordmydesktop.
Como aprendizado é extremamente importante saber
Just a quick heads-up: the URL for link [1] has been moved to here:
http://2buntu.com/1005/how-to-record-your-desktop-with-vlc/
Thank you, Nathan. The link has been updated.