Estoy buscando un programa simple de transmisión de video para Linux (Raspberry Pi). Solo necesita tomar video de una cámara web y transmitirlo en un formato que se pueda incrustar en una página web (servido con NodeJS en el mismo RPi).
La única razón por la que no uso Motion es que tengo dificultades para configurarlo y quiero ver si hay algo más que sea más fácil.
Entonces , según este enlace , pero con algunas condensaciones y ajustes, primero ejecute estos comandos:
apt-get update
apt-get install git libv4l-dev libjpeg8-dev imagemagick cmake -y
git clone git@github.com:jacksonliam/mjpg-streamer.git ~/mjpg-streamer
cd ~/mjpg-streamer/mjpg-streamer-experimental
make USE_LIBV4L2=true clean all
make DESTDIR=/usr install
Aunque no estoy seguro de que la última línea me haya funcionado, supongo que todo funcionó sin ella. Creo que debería haber colocado los archivos en los lugares correctos (por ejemplo, para que los ejecutables no necesiten rutas completas especificadas; en cambio, en el siguiente comando, especifiqué las rutas completas para todos los archivos).
Inicie el servidor:
~/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer -i "~/mjpg-streamer/mjpg-streamer-experimental/input_uvc.so -f 15 -r 320x240" -o "~/mjpg-streamer/mjpg-streamer-experimental/output_http.so -p 8090 -w ./www"
Y si tiene problemas con algo que ya usa la cámara web (por ejemplo, si motion
no salió limpiamente, haga lo siguiente y repita el comando anterior:
fuser /dev/video0
que dará una salida como esta:
/dev/video0: 12324m
Luego ejecute esto para matar lo que sea que esté usando la cámara web:
kill -9 12324
Finalmente, para ver el video, navegue a esta dirección, sustituyendo la dirección IP o URL de su servidor:
http://192.168.0.12:8090/?action=stream
Y para incrustar el video en una página web, simplemente agregue esto al HTML:
<img src="http://192.168.0.12:8090/?action=stream"/>
Como nota al margen, al ejecutar el servidor de transmisión de video, es posible que desee cambiar los cuadros por segundo cambiando el argumento después de -f
. Parece que tiene que ser una figura que esté soportada por la webcam; en teoría, una figura no admitida será coaccionada por mjpeg-streamer
una admitida, pero no se transmitió cuando la configuré en 10
, por ejemplo. Lo mismo ocurre con la resolución; solo 320x240
y 640x480
funcionó para mí.
Yo uso VLC para la transmisión.
Esto funciona con el Raspicam :
raspivid -o - -t 0 -n | cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
Pero prefiero la transmisión a través de rtsp (luego puede usar VLC nuevamente para mirar)
raspivid -o - -t 0 -n | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
Un buen tutorial para Raspberry PI se puede encontrar aquí .
Si usa otra cámara web en lugar de Raspicam, debe cambiar el comando a este (suponiendo que v4l2 reconozca la cámara):
cvlc -vvv v4l2:///dev/video0 --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
Otros enlaces útiles que puede desear leer:
izzy
CL22
izzy