I need to broadcast the stream of my Raspberry pi camera mounted in front of the train. More info on the “train” project here (part1) and here TODO
PHOTO TODO
This is the results of my search on the possible solutions :
motion
more for security or motion detection
with VLC
The camera stream is send to vlc which forward it over the network
raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
-Slow, Delay
+Easy
Direct capture with the new recent v4l2 driver
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}'
+Easy
-Require VLC
with ffmpeg//ffserver
A complete, cross-platform solution to record, convert and stream audio and video.
–The stream is capture and stream by ffmpeg
raspivid -n -vf -hf -t 0 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg -i - -vcodec copy -an -metadata title="Streaming from raspberry pi camera" -f flv $RTMP_URL/$STREAM_KEY
with MJPG streamer
MJPG-streamer takes JPGs from Linux-UVC compatible webcams, file system or other input plugins and streams them as M-JPEG via HTTP to web browsers
http://sourceforge.net/projects/mjpg-streamer/
with gstreamer
GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing.
http://gstreamer.freedesktop.org/
RPi caminterface
RaspiMJPEG is an OpenMAX-Application based on the mmal-library, which is comparable to RaspiVid. Both applications save the recording formated as H264 into a file
http://elinux.org/RPi-Cam-Web-Interface
WebRTC UV4L
WebRTC is a very powerful standard, modern protocol and gives a number of nicefeatures
http://www.linux-projects.org/modules/news/article.php?storyid=174
-only works with pi2
picamera
The project consists primarily of a class (PiCamera) which is a re-implementation of high-level bits of the raspistill and raspivid commands using the ctypes based libmmal header conversion, plus a set of encoder classes which re-implement the encoder callback configuration in the aforementioned binaries. Various classes for specialized applications also exist (PiCameraCircularIO, PiBayerArray, etc.)
https://picamera.readthedocs.org/en/release-1.10/install2.html
avconv
avconv is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter.
CRTMPServer
crtmpserver it is a high performance streaming server able to stream (live or recorded)
live555
http://www.live555.com/liveMedia/
Not tested
PiStreaming
https://github.com/waveform80/pistreaming
Not tested
Finally I decided to use “RPi caminterface” which has the best feedback. I confirms it works out of the box (which save me lot of times).
I could maybe migrate to “WebRTC UV4L” if I decide to go to a Pi2 in the future…
Here are the links I find during my search :
- http://raspberrypi.stackexchange.com/questions/23182/how-to-stream-video-from-raspberry-pi-camera-and-watch-it-live [VLC]
- https://ustream.zendesk.com/entries/63723444-Raspberry-Pi-Streaming-video-to-Ustream [FFMPEG]
- http://blog.oklahome.net/2014/09/what-ive-learned-about-mmal-raspberry.html [raspivid, MMAL]
- http://stephane.lavirotte.com/perso/rov/video_streaming.html [FFMPEG, CRTMPSERVER, AVCONV]
- http://raspberrypi.stackexchange.com/questions/7446/how-can-i-stream-h-264-video-from-the-raspberry-pi-camera-module-via-a-web-serve [ALL]
- http://www.quora.com/Multimedia/Which-is-better-FFmpeg-or-GStreamer-Why [GSTreamer, FFMPEG]