¿Cómo transmitir raspivid a Linux y OSX usando GStreamer, VLC o Netcat?

Respuestas:

32
  • Netcat (nc) parece ser el que tiene el menor retraso.
  • En mi experiencia, VLC tiene el mayor retraso. Por otro lado, hay un cliente VLC para Android, lo cual es conveniente.

  • <IP-OF-THE-CLIENT> es la IP de la computadora que debe recibir la transmisión de video.

  • <IP-OF-THE-RPI> es la IP de la Raspberry Pi.

Usando Netcat:

En el cliente

(Ejecute el comando en el cliente primero y luego en el servidor (RPi)).

Linux

nc -l 2222 | mplayer -fps 200 -demuxer h264es -

OS X

nc -l 2222 | mplayer -fps 200 -demuxer h264es -

En el RPi

/opt/vc/bin/raspivid -t 0 -w 300 -h 300 -hf -fps 20 -o - | nc <IP-OF-THE-CLIENT> 2222

Usando GStreamer:

En el cliente

Linux

gst-launch-1.0 -v tcpclientsrc host=<IP-OF-THE-RPI> port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

OS X

gst-launch-1.0 -v tcpclientsrc host=<IP-OF-THE-RPI> port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! osxvideosink sync=false

En el RPi

/opt/vc/bin/raspivid -t 0 -hf -fps 20 -w 300 -h 300 -o - | gst-launch-1.0 fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=<IP-OF-THE-RPI> port=5000

Usando VLC

En el cliente

El cliente podría incluso estar en un teléfono móvil (lo probé en Android).

Simplemente abra desde la red en el cliente VLC:

http://<IP-OF-THE-RPI>:8090

En el RPi

/opt/vc/bin/raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
JonasVautherin
fuente
La versión Pi no funciona. Quiero decir que no funciona como debería. IP del cliente?
Flash Thunder
1
Estoy de acuerdo, netcat tiene la latencia más baja. ¿Pero por qué usas 200 fps? Mi transmisión es de 30 fps, pero configurar mplayer en 60 se ve mejor, no sé por qué. Si configuro mplayer en 30, agrega una latencia de 1-2 segundos
Elliott B
28

mejor:

en el rpi:

raspivid -t 0 -w 1280 -h 720 -hf -ih -fps 20 -o - | nc -k -l 2222

en tu ordenador:

mplayer -fps 200 -demuxer h264es ffmpeg: // tcp: //10.0.1.3: 2222

apoya la reconexión

soyer
fuente
3
En la frambuesa pi, tuve que usar el -pparámetro para configurar el puerto:raspivid -t 0 -w 1280 -h 720 -hf -ih -fps 20 -o - | nc -k -l -p 2222
johnboiles
3
Gracias por el mplayercomando Funciona también con el más nuevo raspividque puede transmitir a TCP sin usar netcat, así: raspivid -fps 20 -w 1280 -h 720 -t 0 -l -o tcp://0.0.0.0:2222- y el comando de reproducción es el mismo. Todavía estoy buscando la URL correcta para la transmisión VLC. Fue algo así comoh264+tcp://example.org:2222
Tomasz Gandor
1
El comando es tcp / h264: //example.org: 2222. Me pregunto cómo reproducir este tipo de transmisión en Android. Los teléfonos móviles tienen aplicaciones tan pobres.
Valentin Radu
En MacOS: brew install mplayer.
Creimers