Soy nuevo en la Raspberry Pi e incluso nuevo en la cámara Raspberry Pi. He visto muchos tutoriales en línea para la cámara Raspberry Pi, pero aún no he encontrado nada que me permita transmitir directamente desde la cámara Raspberry Pi como lo puede hacer con una cámara web (usando SimpleCV u OpenCV). Esperaba que alguien pudiera señalarme en la dirección correcta.
93
ssh raspberrypi raspivid -o - -t 0 -fps 25 -w 640 -h 360 | mpv - --speed 2 --fps 25
(el "--speed 2" evita que se retrase demasiado).Respuestas:
La solución sugerida por Diego es buena, excepto que es bastante lenta y tiene un gran retraso de video ya que el VLC allí retransmite una transmisión del raspvid. Desde el 12/2013, hay un controlador oficial v4l2 disponible: http://www.ics.com/blog/raspberry-pi-camera-module#.VJFhbyvF-b8 Esto hace que la transmisión retransmitida sea obsoleta. Simplemente cargue el módulo y úselo:
Esto crea una secuencia http en el puerto 12345, también puede usar otros formatos, como el rtcp de la respuesta de Diego. Lea más sobre esto aquí: https://web.archive.org/web/20151012014829/http://www.videolan.org:80/doc/streaming-howto/en/ch03.html
fuente
:demux=264
a CVLC porque la corriente es h264 RAW y hay que establecer el demuxer:cvlc v4l2:///dev/video0 --v4l2-width 1920 --v4l2-height 1080 --v4l2-chroma h264 --sout '#standard{access=http,mux=ts,dst=0.0.0.0:12345}' :demux=264
. Eso hace posible ver la transmisión en VLC para Android, por ejemplo.autoreconf -vfi
ahora debería usar./bootstrap.sh
Hay varias opciones entre las que puede elegir. En mi trabajo, estamos usando VLC para transmitir videos capturados por la cámara Raspberry Pi desde nuestras salas de servidores a la oficina. Una desventaja de esto es que hay un retraso de aproximadamente 5 segundos y no he encontrado una solución para esto. La siguiente es nuestra configuración:
Instale y actualice raspbian y asegúrese de que su cámara esté habilitada (habilite esto ejecutando sudo raspi-config y seleccione Enable Camera)
Instalar vlc
Cree un script para iniciar la transmisión con el siguiente contenido o ejecute el comando (no puede hacer nada más si solo ejecuta el comando).
Hacer el guión ejecutable
Si desea iniciar la transmisión automáticamente, debe agregar el script a crontab. Para que esto funcione, tuve que hacer otro script ejecutado por cron (OBS! VLC no se puede ejecutar como sudo, así que asegúrese de estar en el cron correcto).
sudo nano myscript2.sh
:Entonces:
Para ver la videostream, abra VLC en una computadora en la misma red que la Raspberry Pi que está utilizando para la transmisión. Presione Medios -> Abra Networkstream y pegue lo siguiente en el campo:
Si no le importan los FPS (cuadros por segundo) y no desea ningún retraso, puede usar MJPEG. Puedes leer más sobre esto AQUÍ
Mira ESTE wiki sobre el módulo de cámara Raspberry Pi. Espero que encuentres lo que estás buscando.
fuente
Probé algunas opciones. Sin embargo, encontré el mejor resultado usando ese proyecto: RPi-Cam-Web-Interface de la comunidad eLinux
la transmisión tiene casi cero retraso.
buena suerte :)
fuente
La forma más fácil que he encontrado es obtener una videoalimentación en vivo de una frambuesa pi sin cabeza, con una cámara de frambuesa pi.
Esta solución funciona de inmediato, sin instalar software adicional en el PI.
En el PI:
En la computadora, uno puede transmitir con VLC:
(suponiendo que 192.168.66.154 es la dirección IP del PI)
fuente
Publiqué una posible solución en el foro de frambuesa utilizando un servidor RTSP ligero basado en live555 que se alimenta con un controlador V4L2 que admite la captura H264:
A continuación, debería poder acceder a la secuencia RTSP utilizando:
fuente
--network-caching 300
UV4L (también) admite transmisión estándar de video y audio HTML5 sin necesidad de configuración. También son posibles otras opciones, como MJPEG sobre http.
Actualizar:
UV4L ahora también es compatible con la transmisión de audio y video en vivo a Jitsi Meet Rooms a través de la Web. No se requiere una configuración especial. Es tan fácil como escribir su nombre, sala y hacer clic en Iniciar .
2da actualización:
UV4L ahora también admite video codificado por hardware H264, a fps completos, HD y posiblemente Full HD en el futuro.
fuente
Ambos
mjpeg_streamer
ymotion
parecen tener mejor latencia que cvlc.Utilizando
mjpg_streamer
mjpeg_streamer
requiere compilación pero las instrucciones en el github son sencillas.Después de la compilación, se puede ejecutar iniciando
start.sh
desde el directorio del proyecto o directamente (en el directorio del proyecto):donde
8090
esta el puerto TCP Si no se especifica, el puerto8080
se usará de manera predeterminada. Elstart.sh
script contiene algunos ejemplos de uso con opciones adicionales.Utilizando
motion
Motion incluye un servicio systemd que facilita el inicio automático al arrancar, detener o reiniciar.
Para usarlo en el modo de cámara web IP, se deben establecer las siguientes configuraciones
/etc/motion/motion.conf
:A continuación, en
/etc/default/motion
conjunto:Para hacer que el servicio se inicie automáticamente en el arranque:
Úselo
systemctl start/stop/restart motion
para la acción correspondiente.El puerto de transmisión predeterminado es
8081
. El puerto se establece enstream_port
in/etc/motion/motion.conf
.fuente
No sé si está buscando un software de vigilancia, pero he logrado instalar y ejecutar
motion
un software de detección de movimiento. Deberías echar un vistazo en la guía oficial .fuente
He podido transmitir video usando uv4l WebRTC en Raspberry Pi 2. Es muy fácil. Solo sigue este tutorial. Espero esta ayuda
fuente
Estaba teniendo problemas para obtener la transmisión de video en Windows 7. Había muchas soluciones de Linux, no podía replicarlas en Windows hasta ahora. Finalmente obtuve una solución bastante rápida:
En frambuesa pi:
En la máquina de Windows:
Por lo tanto, creo que nada se vuelve a empacar o se transmite, se remueve o lo que sea. La corriente binaria de raspvid se alimenta a mpc y se muestra. Mi frambuesa funciona a través de wifi, así que al principio obtengo un retraso considerable, que en cuestión de medio minuto se reduce a esos 0.2-0.3 segundos de retraso.
Desafortunadamente, no pude usar vlc de la misma manera, ya que
nc -l -p 5001 | vlc -
solo abre la ventana vlc sin ningún video.fuente
Utilicé Nginx con soporte RTMP para transmitir al mundo, junto con avconv para procesar la entrada de la cámara. El código está disponible en Github .
fuente
Si bien el código de Peter Hansen posiblemente funciona bien en una LAN, por razones de integridad: TCP se trata de la integridad de los datos en comparación con el tiempo real. En una transmisión en tiempo real, alguna pérdida de datos puede ser aceptable en aras de una visualización oportuna. En este caso UDP puede ser mejor. No he probado ese código.
Si se trata de una cámara de seguridad, se puede considerar la multidifusión. Los enrutadores modernos pueden hacerlo incluso en los modelos de $ 100.
fuente
He instalado una solución ONVIF de https://github.com/BreeeZe/rpos en mi pi, siguiendo las instrucciones en README.md .
La única diferencia es que lo he instalado
node v8.4.0
. Esto me permite ver la salida de mi cámara en un NVR conectado en la misma red. Además, la cámara se puede reproducir directamente a través de la transmisión de red del reproductor VLC usando la direcciónrtsp://192.168.1.3:8554/h264
fuente
Un tiempo, un intento tuvo un problema similar con esto:
https://www.npmjs.com/package/ws-avc-player
Es más básico que otras soluciones propuestas, pero creo que funciona bien si la baja latencia en la web es la prioridad.
Funciona en la mayoría de los navegadores (incluso móviles a 480p) sin necesidad de complementos en el navegador.
fuente
raspivid
alimentación de la cámara. Porffmpeg
otro lado, solo obtengo la décima parte de los cuadros por segundo. Usé un Raspbian limpio y un Pi Zero. ¿Tienes algunas pistas para mí?node example/index.js raspivid
Debería funcionar de inmediato si tiene problemas, intente ejecutarlo solonode example/index.js
y por separado/opt/vc/bin/raspivid -pf baseline -ih -t 0 -w 640 -h 480 -hf -fps 15 -g 30 -o - | nc localhost 5000
y vea si obtiene algún error de raspivid