24

How can I stream video stream to Linux or OS X using raspivid and either VLC, GStreamer or Netcat?

JonasVautherin
  • 731
  • 1
  • 6
  • 15
  • You can find some information about RTSP streaming http://raspberrypi.stackexchange.com/questions/12156/is-it-possible-to-stream-h-264-with-rtsp-on-raspberry-pi – mpromonet Jan 25 '15 at 12:14

2 Answers2

37
  • Netcat (nc) seems to be the one with the smallest delay.
  • In my experience, VLC has the biggest delay. On the other hand, there is a VLC client for Android, which is convenient.

  • <IP-OF-THE-CLIENT> is the IP of the computer that should receive the video stream.

  • <IP-OF-THE-RPI> is the IP of the Raspberry Pi.

Using Netcat:

On the client

(Run the command on the client first, and then on the server (RPi)).

Linux

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

OS X

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

On the RPi

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

Using GStreamer:

On the client

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

On the 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

Using VLC

On the client

The client might even be on a mobile phone (I tried on Android).

Simply open from the network in the VLC client:

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

On the 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
  • 731
  • 1
  • 6
  • 15
30

better:

on the rpi:

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

on your computer:

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

supports reconnecting

soyer
  • 301
  • 2
  • 2
  • 3
    On the raspberry pi, I had to use the -p parameter to set the port: raspivid -t 0 -w 1280 -h 720 -hf -ih -fps 20 -o - | nc -k -l -p 2222 – johnboiles Mar 25 '16 at 17:27
  • 3
    Thanks for the mplayer command. It works also with the newer raspivid which can stream to TCP without using netcat, like that: raspivid -fps 20 -w 1280 -h 720 -t 0 -l -o tcp://0.0.0.0:2222 - and the play command is the same. I'm still looking for the correct URL for VLC streaming. It was something like h264+tcp://example.org:2222 – Tomasz Gandor Dec 11 '17 at 23:14
  • 2
    Command is tcp/h264://example.org:2222. I am wondering how to play this type of stream on Android. Mobile phones have such poor apps. – Valentin Radu Mar 11 '18 at 15:26
  • On macOS: brew install mplayer. – creimers Jan 31 '19 at 17:10