¿Estás intentando emular una cámara de hardware con una transmisión desde una Raspberry Pi/picam?

¿Estás intentando emular una cámara de hardware con una transmisión desde una Raspberry Pi/picam?

Tengo una raspberry pi y una pi cam v2 conectadas a wifi. Estoy intentando transmitir la transmisión de la cámara a una computadora portátil a través de wifi y luego hacer que esa transmisión aparezca como si fuera una cámara de hardware en la computadora portátil. Quiero hacer esto para poder incluirlo en algún otro software que requiera una cámara de hardware (no puedo reescribir este software, solo tengo que solucionarlo).

Estoy ejecutando ubuntu 18.04 en la computadora portátil. Según mi investigación, esto debería ser muy posible usando alguna combinación de ffmpeg y vfl2loopback. Comencé instalando esta biblioteca para transmitir la cámara a un servidor web:https://github.com/silvanmelchior/RPi_Cam_Web_InterfaceEsto funciona y puedo acceder a la transmisión de la cámara en mi navegador enhttp://10.0.0.47/httpLo configuré sin nombre de usuario ni contraseña para simplificar. Creo que el puerto de la cámara es 80 según la salida de nmap.

Ahora estoy intentando redirigir la transmisión en mi computadora portátil Ubuntu. Según mi investigación y experimentación, este comando es lo más cerca que he estado:

ffmpeg -re -yohttp://10.0.0.47/html-mapa 0:v -f v4l2 /dev/video0

(o también lo mismo con el puerto 80 en lugar de /html, no estoy seguro si esto importa): ffmpeg -re -ihttp://10.0.0.47:80-mapa 0:v -f v4l2 dev/video0

Esto parece funcionar al principio, pero luego produce el siguiente error:

http://10.0.0.47:80: Se encontraron datos no válidos al procesar la entrada

Al buscar en Google, esto puede deberse a que sale un tipo incorrecto de transmisión de la interfaz rpi_cam_web, pero no estoy seguro de si esto es cierto y, de ser así, de cómo solucionarlo. También investigué el código html de la página que accede al servidor web y puedo ver que está enviando una serie de jpg, que cambian constantemente con marcas de tiempo en el nombre del archivo. Quizás este sea el problema, pero nuevamente, no estoy seguro.

¿Algunas ideas? La ayuda sería muy apreciada.

Editar: probé otro método, que parece ir un poco más allá, pero todavía tengo problemas:

(en el pi): raspivid -o - -t 0 -n -w 320 -h 240 -fps 30| cvlc -vvv flujo:///dev/stdin --sout '#rtp{sdp=rtsp://:8000/}' :demux=h264

-->Esto inicia una transmisión que puedo ver con éxito en el reproductor multimedia VLC.

(luego en el sistema host): gst-launch-1.0 -v rtspsrc location=rtsp://10.0.0.47:8000/ ! dispositivo v4l2sink=/dev/video4

Probé varios dispositivos, como /dev/video0, /dev/video1, etc. Todos producen '"/dev/videoX" no es un dispositivo de salida', excepto video4, que parece estar funcionando al principio, pero luego aparecen errores. fuera con:

ERROR: del elemento /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: error de flujo de datos interno. Información de depuración adicional: gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: transmisión detenida, motivo no vinculado (-1) La ejecución finalizó después de 0:00:00.082360368

¿Alguna idea de qué podría estar fallando allí?

¡Gracias de nuevo!

Edición 2:

Es posible que funcione con la siguiente secuencia de comandos:

(en pi): raspivid -o - -t 0 -n -w 320 -h 240 -fps 30| cvlc -vvv flujo:///dev/stdin --sout '#rtp{sdp=rtsp://:8000/}' :demux=h264

(en la computadora host): ffmpeg -f h264 -i tcp://10.0.0.47:8000/ -f v4l2 -pix_fmt yuv420p /dev/video0

Esto no genera ningún error, pero no estoy 100% seguro de que esté funcionando porque todavía no he podido cargar la transmisión en el software en el que estoy intentando conectar la cámara. Intenté probarlo con esta herramienta de sitio web:

https://test.webrtc.org/

y la herramienta me permite seleccionar "Dispositivo de video ficticio 0x0000", lo cual estoy bastante seguro, pero luego me dice "no se detectó ningún dispositivo de video", no encuentra ninguna cámara en su prueba y luego aparece el mismo video ficticio. El dispositivo no aparece como una opción en recargas de página posteriores. Entonces creo que hay algo mal en cómo estoy pasando la transmisión.

Respuesta1

Este sitio web muestra cómo transmitir RPi a OBS: https://www.instructables.com/Webcam-Over-WiFi-for-OBS/

Entonces podrías usar la cámara virtual OBS para simular una cámara de hardware.

(Yo personalmente uso la cámara virtual OBS, pero no la he usado con RPi).

Alternativamente puedes probar esto: https://www.tomshardware.com/uk/how-to/use-raspberry-pi-as-pc-webcam

información relacionada