
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 N
está 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/videoN
con 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 -framerate
15 a otro si desea una velocidad de fotogramas diferente.
La resolución se elige en el -video_size
pará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
Descargalo,
compilarlo (
make
ysu -c 'make install'
),cargar el módulo con
su -c 'modprobe v4l2loopback'
,luego cambie una línea en el archivo
examples/yuv4mpeg_to_v4l2.c
de la carpeta fuente v4l2loopback dev.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
a
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
y hazlo
make
en esta carpeta.Luego ejecútelo desde el
examples
directorio 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.mp4
con el nombre de tu archivo de video. Y reemplácelo /dev/video0
con 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é.
¿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 universe
repositorio que he encontrado hasta ahora).
No tengo ninguna solución Unix-y increíble. Pero esos funcionaron para mí en el mundo real.