Delirios de un Informático

Streaming de una webcam con ffmpeg

Para controlar a este bicho mientras no estoy en casa, pensé en usar la webcam en streaming para poder conectarme desde cualquier lado con el móvil y ver qué está haciendo. Tras mirar varias alternativas, me decidí por ffmpeg por la cantidad de formatos en los que se puede emitir, además de ser relativamente fácil de configurar.

La emisión se basa en dos ejecutables: ffserver y ffmpeg. El primero se ejecuta en modo escucha y se encarga de hacer el streaming real mientras que el segundo le envía la imagen al primero.

Para empezar, es necesario crear un archivo de configuración tomando como base /etc/ffserver.conf, dejándolo como sigue:

Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -

<Feed webcam.ffm>
	File /tmp/webcam.ffm
	FileMaxSize 5M
</Feed>

<Stream webcam.swf>
	Feed webcam.ffm
	Format swf
	VideoBitRate 320
	VideoFrameRate 15
	VideoSize 640x480
	NoAudio
	VideoQMin 1
	VideoQMax 3
</Stream>

<Stream stat.html>
	Format status
</Stream>

<Redirect index.html>
	URL http://www.ffmpeg.org/
</Redirect>

Una vez configurado, es necesario lanzar el servidor con el comando:

ffserver -f ffserver.conf

Ahora sólo quedaría enviar la imagen al servidor con el comando ffmpeg y se puede utilizar cualquier entrada para redireccionarla al servidor. Por ejemplo, en el caso de una webcam, una capturadora de TV o cualquier entrada de vídeo, el comando sería:

ffmpeg -r 15 -s 320x240 -f video4linux -i /dev/video0 http://localhost:8090/webcam.ffm

Con mi cámara web Logitech Quickcam Messenger y el driver gspca me encontré con este error:

[flv @ 0x97df6f0]rc buffer underflow
VIDIOCMCAPTURE: Invalid argument

Que pude solucionar añadiendo lo siguiente antes del comando ffmpeg:

LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so

Si todo va bien, podremos ver la imagen emitida con el navegador, ya que creará un objeto Flash automáticamente :).

5 comentarios en “Streaming de una webcam con ffmpeg”

patoroco dice:

Sisi, tu lo que quieres es espiar a la vecina desde el curro xD

admin dice:

xDDDDDD

Pero no me hace falta, trabajo en casa 😉

¡Y a mi me parecía mucho trabajo comprar la comida y desparasitar a dos perros y cuatro gatos! ¡Y vas tú y te programas una webcam para seguir a tu bicho! Memorable.

😉

Fernando dice:

Unknown input format: ‘video4linux’
por que?

admin dice:

Quizá el formato ha cambiado, prueba con v4l o v4l2