En cumplimiento del Real Decreto-ley 13/2012 le informamos que este blog utiliza cookies propias y de terceros con el objetivo de personalizar el contenido, ofrecer funciones de redes sociales y analizar el tráfico. Si continúa navegando consideramos que acepta el uso de cookies. A partir del resultado de la votación en el parlamento europeo de la reforma de la protección de datos este mensaje puede desaparecer en abril y pasar a mostrarse una vez al mes como recordatorio.
Acepto | Quiero saber más
TuxyLinux

Usa tu cámara DSLR como webcam de streaming

No soy muy aficionado a grabar videos o hacer streaming pero recientemente me he visto en la necesidad de grabar un vídeo y quería evitar usar la webcam cutre que tengo para usar en su lugar la cámara DSLR.

Para hacer esto necesitaremos v4l2loopback para el kernel, gphoto2 para el control de la cámara, ffmpeg o gstreamer para codificar el vídeo y por supuesto un software de streaming o grabación de vídeo.

En esta entrada no me centraré en como se configura un streaming sino en cómo hacer funcionar la cámara DSLR (o compacta).

Configurar el equipo

Carga la batería de la cámara o por lo menos asegúrate de que tienes suficiente carga para hacer unas pruebas.

El primer paso es cargar el módulo v4l2loopback al kernel.

[user@host ~]$ sudo modprobe v4l2loopback

 

Seguidamente usaremos gphoto2 para capturar las imágenes de video de la cámara pero primero hay que verificar de que gphoto2 soporta esa opción de la cámara con gphoto2 --abilities.

[user@host ~]$ gphoto2 --abilities
Capacidades de la cámara : Nikon DSC D3300
Soporte de puerto serie : no
Soporte de puerto USB : sí
Opciones de captura :
: Imagen
: Previsualización
: Trigger Capture
Soporte de configuración : sí
Delete selected files on camera : sí
Delete all files on camera : no
Soporte de miniaturas : sí
Soporte de envío de ficheros : sí

 

Si te aparece la opción de Previsualización (marcado en rojo en el ejemplo) gphoto2 soporta la opción de captura de vídeo, de no ser así siempre puedes comprobar la lista de cámaras soportadas en la página de gphoto2.

Sabiendo ya si la cámara funciona para este cometido o no, capturamos el vídeo con gphoto2 --capture-movie --stdout. Después usaremos una tubería para que ffmpeg o gstreamer lo procese, pero primero veamos los parámetros de gphoto2.

  • --capture-movie -> Captura imágenes de video de la cámara.
  • --stdout -> Envía al descriptor de salida estándar lo que le hemos ordenado, en este caso capturar un vídeo.

Procesar la salida con FFMPEG o GStreamer

Como ya he dicho, hay que mandar el vídeo a través de una tubería a un software intermedio que procese la señal para que el software final (el editor de vídeo, el programa de streaming, etc.) pueda usarlo.

Este software intermedio puede ser FFMPEG o Gstreamer.

FFMPEG

Personalmente prefiero usar ffmpeg porque estoy más acostrumbrado a trabajar con él, pero ambos programas valen para lo que queremos hacer.

Linea de comandos con FFMPEG:

[user@host ~]$ gphoto2 --capture-movie --stdout | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv422p -threads 0 -f v4l2 /dev/video1
  • -vcodec rawvideo -> Usa el vídeo en bruto como códec.
  • -pix_fmt yuv422p -> Establece un espacio de color YUV con compresión 4:2:2 progresivo.
  • -threads 0 -> Utiliza los hilos de procesamientos óptimos para la tarea designada.
  • -f v4l2 -> Indica que el formato de salida es v4l2.
  • /dev/video1 -> Destino del video.

Es muy probable que salgan dos avisos en amarillo relacionados con xxxx y xxxx pero pueden ignorarse sin problema.

GStreamer

Linea de comandos con gstreamer:

[user@host ~]$ gphoto2 --capture-movie --stdout | gst-launch-1.0 fdsrc ! decodebin name=dec ! queue ! videoconvert ! v4l2sink device=/dev/video1

Probando la configuración con VLC

Ahora ya se pude probar si funciona. Para hacerlo uso la función de caputrar video de VLC.

Con VLC pulsamos Ctrl + C o vamos al menú Medio > Abrir dispositivo de caputra y lo configuramos como en la siguiente imagen.

vlc-abrir-medio

El dispositivo de audio no importa mucho puesto que solo nos interesa comprobar si fuciona el video.

Pulsamos Reproducir y si todo esta configurado correctamente estaremos viendo por fin las imágenes de la cámara.

vlc-captura-video

Consideraciones finales

Con esto ya puedes utilizar tu cámara para hacer streaming o grabar video-blogs directamente al ordenador.

Existen problemas relacionados con el espacio de color a la hora de usar la cámara como una webcam con Skype u otro software.

En la wiki de v4l2loopback en gitHub explican este problema un poco:

Deja un comentario

Tu dirección de correo electrónico no será publicada.