How can I stream video stream to Linux or OS X using raspivid and either VLC, GStreamer or Netcat?
2 Answers
- 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
-
Pi version doesn't work. I mean it doesn't work how it should. Client ip? Jul 3, 2015 at 9:56
-
1I agree, netcat has the lowest latency. But why do you use 200fps? My stream is 30fps, but setting mplayer to 60 looks best, I don't know why. If I set mplayer to 30 then it adds 1-2 seconds latency Aug 3, 2018 at 6:08
-
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
-
3On 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
Mar 25, 2016 at 17:27 -
3Thanks for the
mplayer
command. It works also with the newerraspivid
which can stream to TCP without usingnetcat
, 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 likeh264+tcp://example.org:2222
Dec 11, 2017 at 23:14 -
2Command is tcp/h264://example.org:2222. I am wondering how to play this type of stream on Android. Mobile phones have such poor apps. Mar 11, 2018 at 15:26
-