GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Falsificar una cámara web usando un dispositivo de bucle invertido de video?

Quiero usar un clip de video en bucle como mi fuente de cámara web en un Hangout de Google+. Instalé v4l2loopback y creé un dispositivo de loopback de video. Pero no he descubierto cómo escribir los cuadros de video en el dispositivo. El ejemplo dado es:

gst-launch videotestsrc ! v4l2sink device=/dev/video1

Entonces, después de leer la página del manual de gst-launch y tratar de entender qué estaba pasando, hice mi débil intento:

sudo gst-launch-0.10 filesrc location=//eadn-wc01-5196795.nxedge.io/home/briankb/Videos/darthvaderdancing.mp4 ! v4l2sink device=/dev/video0

Lo que resultó en:

Setting pipeline to PAUSED ...
libv4l2: error getting pixformat: Invalid argument
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...

(gst-launch-0.10:12622): GStreamer-CRITICAL **: gst_caps_get_structure: assertion `GST_IS_CAPS (caps)' failed
New clock: GstSystemClock

(gst-launch-0.10:12622): GStreamer-CRITICAL **: gst_structure_get_name: assertion `structure != NULL' failed
Caught SIGSEGV accessing address (nil)
#0  0x00007fc1890f0b03 in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007fc18962bff6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fc18962c45a in g_main_loop_run ()
#3  0x00007fc189b5c4cb in gst_bus_poll ()
#4  0x0000000000404587 in ?? ()
#5  0x0000000000403c34 in ?? ()
#6  0x00007fc18902b76d in __libc_start_main ()
#7  0x00000000004043bd in ?? ()
#8  0x00007fff88253ed8 in ?? ()
#9  0x000000000000001c in ?? ()
#10 0x0000000000000006 in ?? ()
#11 0x00007fff882548c4 in ?? ()
#12 0x00007fff882548d4 in ?? ()
#13 0x00007fff882548dc in ?? ()
#14 0x00007fff88254904 in ?? ()
#15 0x00007fff88254906 in ?? ()
#16 0x00007fff8825490f in ?? ()
#17 0x0000000000000000 in ?? ()
Spinning.  Please run 'gdb gst-launch 12622' to continue debugging, Ctrl-C to quit, or Ctrl- to dump core.

El clip que estoy tratando de usar es un video h264 a 29.97 fps, 320×240 y en un contenedor mp4 (es de Youtube).

Mejor respuesta

El gst-launch Las páginas de manual nos dicen que primero debemos decodificar el video, y la forma más fácil de hacerlo es así:

gst-launch-0.10 filesrc location=[location] ! decodebin ! v4l2sink device=/dev/video0

gst-launch no necesita ejecutarse como root, y [location] ¡también puede ser relativo!


Ubuntu
  1. ¿Cómo descargar videos de Facebook usando 'youtube-dl' en Linux?

  2. Cómo crear particiones dentro del dispositivo loopback

  3. ¿Reproducir un video con gstreamer y gst-launch?

  4. ¿Cómo configuro más de 10 dispositivos de loopback?

  5. ¿Existen alternativas al uso de `udev`?

Cómo crear su propio servidor de videoconferencia usando Jitsi Meet en Ubuntu 18.04 LTS

Cómo configurar interfaces de red usando NMCLI en Centos 7.6

¿Problemas con el vídeo de la cámara web Logitech C310?

Uso de los tutoriales en video de cPanel

¿Cómo escribir en una cámara web virtual en Linux?

Tubería/Mezcla de entrada de línea a salida en PulseAudio