Usando desktop como webcam falsa no Linux

Usando desktop como webcam falsa no Linux

Quero fazer uma transmissão ao vivo (de uma janela) do meu desktop Linux usando um site de streaming gratuito, usando o vídeo capturado como uma webcam falsa. Existem muitas ferramentas para isso no Windows. O ffmpeg me permite capturar a entrada em uma janela específica, mas não consigo encontrar uma maneira de enviar o vídeo para um dispositivo falso tipo webcam utilizável por flash.

Alguém pode recomendar um método (ou software) para fazer isso?

Responder1

Você pode instalarloopback v4l2. É um módulo do kernel que simula uma webcam. Carregue-o com:

modprobe v4l2loopback

Então você precisa enviar o stream de vídeo para o dispositivo /dev/videoN(onde Nestá o número que corresponde ao dispositivo recém-criado - provavelmente o número mais alto) usando um programa como o ffmpeg. Para capturar a área de trabalho e encaminhá-la /dev/videoNcom o ffmpeg, você pode usar a seguinte linha de comando:

ffmpeg -probesize 100M -framerate 15 -f x11grab -video_size 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/videoN

Altere o valor de -framerate15 para outro valor se desejar uma taxa de quadros diferente.

A resolução é escolhida no -video_sizeparâmetro. Se você deseja especificar um deslocamento do canto superior esquerdo da tela, passe-o no parâmetro -i no formato -i :0.0+x,y, onde x e y são o deslocamento horizontal e vertical respectivamente.

Responder2

Usarv4l2loopback com mplayer.

  1. Baixe,

  2. compilá-lo ( makee su -c 'make install'),

  3. carregue o módulo com su -c 'modprobe v4l2loopback',

  4. em seguida, altere uma linha no arquivo examples/yuv4mpeg_to_v4l2.cda pasta de origem v4l2loopback de

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
    

para

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
  1. e faça makenesta pasta.

  2. Em seguida, execute-o no examplesdiretório assim:

    mkfifo /tmp/pipe  # only needed once, as long as you do not delete the file /tmp/pipe
    ./yuv4mpeg_to_v4l2 < /tmp/pipe &
    mplayer movie.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
    

onde você substitui movie.mp4pelo nome do seu arquivo de vídeo. E substitua /dev/video0pelo seu dispositivo de loopback.

O MPlayer é capaz de reproduzir qualquer webstream, todos os tipos de arquivos de vídeo, até mesmo do stdin! Acabei de testar com um arquivo dehttp://www.tagesschau.deque é um site de notícias alemão.

TS=$(wget "http://www.tagesschau.de/multimedia/video/" -q -O - | grep --regexp='http.*\.webm"' | sed -e 's%.*href="%%' -e 's%\.webm".*%\.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

Em vez do $TS você poderia colocar um -(que significa stdin). E na frente do mplayer seu comando ffmpeg redirecionando sua saída para stdout. Então, algo como:

./yuv4mpeg_to_v4l2 < /tmp/pipe &
ffmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

Não testei o último, porque você não contou como é o seu comando ffmpeg.

Responder3

Qual distro você está usando? Tive sucesso com o WebCamStudio no Arch combinado com o "estúdio" baseado na web Livestream. Já faz um tempinho que não o uso.

http://www.ws4gl.org/

O que você está tentando fazer exatamente? ffmpeg compilado com x11grab pode gravar a área de trabalho. Tive um sucesso limitado ao levar isso para o Ustream, mas, novamente, já faz um tempo e acho que o que estava fazendo não funcionará mais.

Se você deseja apenas transmitir um arquivo em vez de sua área de trabalho (estou pensando que quando você diz "Uma janela", você quer dizer "VLC"), posso apontar a direção certa para fazer isso funcionar com o Livestream (talvez Ustream). Estou desajeitadamente descobrindo como fazer isso por meio de experimentação. Não é fantástico, mas funciona com Livestream.

Justin.tv também possui scripts que podem transmitir do VLC para seu serviço.

http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API

Responder4

Primeiro, apareça.in provavelmente faz o que você deseja sem complicações (não sou afiliado):http://aparece.in/

Em segundo lugar, você pode transmitir para o Twitch ou outros serviços usando o OBS, que recentemente adicionou suporte ao Linux (!):https://obsproject.com/

OBS também resolve o problema muito mais difícil de mixar o som do sistema e a entrada de áudio durante a captura de tela no Ubuntu (não resolvido por nada no universerepositório que encontrei até agora).

Não tenho nenhuma solução unix-y incrível. Mas isso funcionou para mim no mundo real.

informação relacionada