Quero fazer uma transmissão ao vivo da (uma janela na) minha área de trabalho 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 permite capturar entrada em uma janela específica, mas não consigo encontrar uma maneira de enviar o vídeo para um dispositivo falso no estilo da webcam, utilizável por flash.
Alguém pode recomendar um método (ou software) para fazer isso?
linux
ffmpeg
screencasts
virtual-webcam
bkconrad
fonte
fonte
Respostas:
Você pode instalar o v4l2loopback . É um módulo do kernel que simula uma webcam. Carregue-o com:
Então você precisa enviar o fluxo de vídeo para o dispositivo / dev / video0 usando um programa como o ffmpeg. Para capturar a área de trabalho e encaminhá-la para / dev / video0 com ffmpeg, você pode usar a seguinte linha de comando:
Altere o valor de -r de 15 para outra coisa, se desejar uma taxa de quadros diferente. A resolução é escolhida no parâmetro -s. Se você deseja especificar um deslocamento no 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.
fonte
[x11grab @ 0x24013c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
,[v4l2 @ 0x2409520] ioctl(VIDIOC_G_FMT): Invalid argument
eCould not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Use v4l2loopback com mplayer .
make
esu -c 'make install'
),su -c 'modprobe v4l2loopback'
,altere uma linha no arquivo
examples/yuv4mpeg_to_v4l2.c
da pasta de origem v4l2loopback depara
e faça
make
nesta pasta.Em seguida, execute-o no
examples
diretório assim:onde você substitui
movie.mp4
pelo nome do seu arquivo de vídeo. E substitua/dev/video0
pelo seu dispositivo de loopback.O MPlayer é capaz de reproduzir qualquer fluxo da web, todos os tipos de arquivos de vídeo, mesmo do stdin! Acabei de testar com um arquivo de http://www.tagesschau.de, que é um site de notícias alemão.
Em vez do $ TS, você pode colocar um
-
(que significa stdin). E na frente do mplayer, seu comando ffmpeg redireciona sua saída para stdout. Então, algo como:Não testou o último, porque você não contou como o seu comando ffmpeg se parece.
fonte
./yuv4mpeg_to_v4l2 < /dev/video0 &
leva a./yuv4mpeg_to_v4l2: : missing YUV4MPEG2 header
. Como substituir/tmp/pipe
por/dev/video0
?Que distro você está usando? Eu tive sucesso com o WebCamStudio sob Arch combinado com o "estúdio" baseado na Web da Livestream. Já faz um tempo desde que eu o usei.
http://www.ws4gl.org/
O que você está tentando fazer exatamente? O ffmpeg compilado com o x11grab pode gravar a área de trabalho. Tive um sucesso limitado ao enviar isso para a Ustream, mas novamente já faz um tempo e acho que o que estava fazendo não funcionaria mais.
Se você quiser apenas transmitir um arquivo em vez de sua área de trabalho (estou pensando quando você diz "Uma janela", você quer dizer "VLC"), posso apontar na direção certa para que isso funcione com o Livestream (talvez Ustream). Estou desajeitadamente descobrindo como fazer isso através da experimentação. Não é fantástico, mas funciona com o Livestream.
O Justin.tv também possui scripts que podem transmitir do VLC para seus serviços.
http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API
fonte
Primeiro, o appear.in provavelmente faz o que você quer sem problemas (não sou afiliado): http://appear.in/
Segundo, você pode transmitir para o Twitch ou outros serviços usando o OBS, que adicionou recentemente o suporte ao Linux (!): Https://obsproject.com/
O OBS também resolve o problema muito mais difícil de muxar a entrada de som e áudio do sistema durante a captura de tela no Ubuntu (não resolvida por nada no
universe
repositório que encontrei até agora).Eu não tenho nenhuma solução unix-y incrível. Mas aqueles funcionaram para mim no mundo real.
fonte