Como usar o VLC Media Player para Gravar Desktop & Webcam

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

8 pensamentos sobre “Como usar o VLC Media Player para Gravar Desktop & Webcam

  1. 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

  2. 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.

Deixe um comentário