Usar el escritorio como cámara web falsa en Linux

Usar el escritorio como cámara web falsa en Linux

Quiero hacer una transmisión en vivo de (una ventana en) mi escritorio Linux usando un sitio de transmisión gratuito, usando el video capturado como una cámara web falsa. Hay muchas herramientas para esto en Windows. ffmpeg me permite capturar entradas en una ventana específica, pero no puedo encontrar una manera de enviar el video a un dispositivo estilo cámara web falso que se pueda utilizar con flash.

¿Alguien puede recomendar un método (o software) para hacer esto?

Respuesta1

puedes instalarbucle invertido v4l2. Es un módulo del kernel que simula una cámara web. Cárgalo con:

modprobe v4l2loopback

Luego debe enviar la transmisión de video al dispositivo /dev/videoN(donde Nestá el número que corresponde al dispositivo recién creado, probablemente el número más alto) usando un programa como ffmpeg. Para capturar el escritorio y reenviarlo /dev/videoNcon ffmpeg, puede utilizar la siguiente línea 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

Cambie el valor de -framerate15 a otro si desea una velocidad de fotogramas diferente.

La resolución se elige en el -video_sizeparámetro. Si desea especificar un desplazamiento desde la esquina superior izquierda de la pantalla, páselo en el parámetro -i en el formulario -i :0.0+x,y, donde xey son el desplazamiento horizontal y vertical respectivamente.

Respuesta2

Usarv4l2loopback con mplayer.

  1. Descargalo,

  2. compilarlo ( makey su -c 'make install'),

  3. cargar el módulo con su -c 'modprobe v4l2loopback',

  4. luego cambie una línea en el archivo examples/yuv4mpeg_to_v4l2.cde la carpeta fuente v4l2loopback de

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
    

a

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
  1. y hazlo makeen esta carpeta.

  2. Luego ejecútelo desde el examplesdirectorio así:

    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
    

donde lo reemplazas movie.mp4con el nombre de tu archivo de video. Y reemplácelo /dev/video0con su dispositivo loopback.

MPlayer puede reproducir cualquier transmisión web y todo tipo de archivos de vídeo, ¡incluso desde stdin! Lo acabo de probar con un archivo dehttp://www.tagesschau.deque es un sitio de noticias alemán.

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

En lugar de $TS, podrías poner un -(que significa stdin). Y frente a mplayer, su comando ffmpeg redirige su salida a stdout. Entonces algo como:

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

No probé el último porque no dijiste cómo se ve tu comando ffmpeg.

Respuesta3

¿Qué distro está usando? He tenido éxito con WebCamStudio bajo Arch combinado con el "estudio" basado en web Livestream. Aunque ha pasado un tiempo desde que lo usé.

http://www.ws4gl.org/

¿Qué estás tratando de hacer exactamente? ffmpeg compilado con x11grab puede grabar el escritorio. He tenido un éxito limitado al enviar eso a Ustream, pero nuevamente ha pasado un tiempo y creo que lo que estaba haciendo ya no funcionará.

Si solo desea transmitir un archivo en lugar de su escritorio (estoy pensando que cuando dice "Una ventana", quiere decir "VLC"), puedo indicarle la dirección correcta para que eso funcione con Livestream (tal vez Ustream). Estoy descubriendo torpemente cómo hacer esto mediante la experimentación. No es fantástico pero funciona con Livestream.

Justin.tv también tiene scripts que pueden transmitir desde VLC a su servicio.

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

Respuesta4

Primero, aparecer.in probablemente hace lo que quieres sin ningún problema (no estoy afiliado):http://aparecer.in/

En segundo lugar, puedes transmitir a Twitch u otros servicios usando OBS, que recientemente agregó soporte para Linux (!):https://obsproject.com/

OBS también resuelve el problema mucho más difícil de mezclar el sonido y la entrada de audio del sistema durante la captura de pantalla en Ubuntu (no resuelto por nada en el universerepositorio que he encontrado hasta ahora).

No tengo ninguna solución Unix-y increíble. Pero esos funcionaron para mí en el mundo real.

información relacionada