Go to file
2016-08-13 15:46:15 +00:00
inc remove useless V4L2DeviceParameters in V4L2DeviceSource 2016-07-16 17:15:44 +00:00
src update libv4l2cpp 2016-08-13 15:46:15 +00:00
v4l2wrapper@d5dd84776a update libv4l2cpp 2016-08-13 15:37:25 +00:00
.coveralls.yml fix coveralls key 2016-06-01 17:14:41 +00:00
.gitignore add v4l2rtspserver to .gitignore 2016-08-13 15:38:26 +00:00
.gitmodules extract V4L2 wrapper 2015-01-22 19:42:08 +00:00
.travis.yml add asound for travis build 2016-06-19 19:32:21 +02:00
CMakeLists.txt make experiment with ALSA capture 2016-06-19 19:15:51 +02:00
index.html upgrade index.html to use hls.js 2016-06-04 17:36:31 +00:00
LICENSE Initial commit 2013-11-09 15:08:44 -08:00
raspberry.toolchain fix #26: wrong wrchitechrue in deb package 2016-06-18 08:20:00 +00:00
README.md fix #31: update command line description indicating -F0 disable fps setting 2016-08-13 15:36:10 +00:00

Build status Coverity Scan Build Status Coverage Status

v4l2rtspserver

This is an streamer feed from an Video4Linux device that support H264/JPEG or VP8 capture.

The RTSP server support :

  • RTP/UDP unicast
  • RTP/UDP multicast
  • RTP/TCP
  • RTP/RTSP/HTTP

The HTTP server support :

  • HLS
  • MPEG-DASH

License

Domain public

Dependencies

Download

Latest build

Before build

The build try to install live555 package using apt-get, however in order to install live555 disabling check of port reuse, you can proceed like this:

wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz -O - | tar xvzf -
cd live
./genMakefiles linux
sudo make CPPFLAGS=-DALLOW_RTSP_SERVER_PORT_REUSE=1 install

Build

cmake . && make

If it fails you will need to install liblivemedia-dev liblog4cpp5-dev.
If it still not work you will need to read Makefile.

Install

make install

Build Package

cpack .
dpkg -i v4l2rtspserver*.deb

Using Raspberry Pi Camera

This RTSP server works using Raspberry Pi camera with :

Using with v4l2loopback

For camera providing uncompress format v4l2tools can compress the video to an intermediate virtual V4L2 device v4l2loopback:

/dev/video0 (camera device)-> v4l2compress_h264 -> /dev/video10 (v4l2loopback device) -> v4l2rtspserver

This workflow could be set using :

modprobe v4l2loopback video_nr=10
v4l2compress_h264 /dev/video0 /dev/video10 &
v4l2rtspserver /dev/video10 &

Usage

./v4l2rtspserver [-v[v]] [-Q queueSize] [-O file] \
		       [-I interface] [-P RTSP port] [-p RTSP/HTTP port] [-m multicast url] [-u unicast url] [-M multicast addr] [-c] [-t timeout] \
		       [-r] [-s] [-W width] [-H height] [-F fps] [device1] [device2]
	 -v       : verbose
	 -vv      : very verbose
	 -Q length: Number of frame queue  (default 10)
	 -O output: Copy captured frame to a file or a V4L2 device
	 RTSP options :
	 -I addr  : RTSP interface (default autodetect)
	 -P port  : RTSP port (default 8554)
	 -p port  : RTSP over HTTP port (default 0)
	 -u url   : unicast url (default unicast)
	 -m url   : multicast url (default multicast)
	 -M addr  : multicast group:port (default is random_address:20000)
	 -c       : don't repeat config (default repeat config before IDR frame)
	 -t secs  : RTCP expiration timeout (default 65)
	 -T       : send Transport Stream instead of elementary Stream
	 -S secs  : HTTP segment duration (enable HLS & MPEG-DASH)
	 V4L2 options :
	 -r       : V4L2 capture using read interface (default use memory mapped buffers)
	 -w       : V4L2 capture using write interface (default use memory mapped buffers)
	 -s       : V4L2 capture using live555 mainloop (default use a separated reading thread)
	 -f       : V4L2 capture using current capture format (-W,-H are ignored)
	 -fformat : V4L2 capture using format (-W,-H are used)
	 -W width : V4L2 capture width (default 640)
	 -H height: V4L2 capture height (default 480)
	 -F fps   : V4L2 capture framerate (default 25, 0 disable setting framerate)
	 device   : V4L2 capture device (default /dev/video0)

Receiving HTTP streams

When v4l2rtspserver is started with '-S' arguments it give access to streams through HTTP. These streams could be reveced :

* for MPEG-DASH with :   
       MP4Client http://..../unicast.mpd   
* for HLS with :  
       vlc http://..../unicast.m3u8  
       gstreamer-launch-1.0 playbin uri=http://.../unicast.m3u8