All Projects → mpromonet → V4l2rtspserver

mpromonet / V4l2rtspserver

Licence: unlicense
RTSP Server for V4L2 device capture supporting HEVC/H264/JPEG/VP8/VP9

Labels

Projects that are alternatives of or similar to V4l2rtspserver

ZLMediaKit
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11
Stars: ✭ 7,790 (+613.37%)
Mutual labels:  rtsp, hls
Zlmediakit
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181 server and client framework based on C++11
Stars: ✭ 5,248 (+380.59%)
Mutual labels:  rtsp, hls
video-server
Server which connects to set of existing RTSP's and provides HLS/MSE-based streams.
Stars: ✭ 12 (-98.9%)
Mutual labels:  rtsp, hls
streamer
Go Package built around spinning up streaming processes
Stars: ✭ 37 (-96.61%)
Mutual labels:  rtsp, hls
Easyplayer Rtsp Android
An elegant, simple, fast android RTSP/RTMP/HLS/HTTP Player.EasyPlayer support RTSP(RTP over TCP/UDP)version & Pro version,cover all kinds of streaming media!EasyPlayer是一款精炼、高效、稳定的流媒体播放器,分为RTSP版和Pro版本,支持各种各样的流媒体音视频播放!
Stars: ✭ 437 (-59.98%)
Mutual labels:  rtsp, hls
wyzecam-hls
Converts MP4 files from WyzeCam NFS to HLS stream. Much more stable alternative to RTSP firmware.
Stars: ✭ 58 (-94.69%)
Mutual labels:  rtsp, hls
wsa
WSA(Websocket Streaming Agent) is a stream server target for mp4/h264 streaming over websocket
Stars: ✭ 35 (-96.79%)
Mutual labels:  rtsp, hls
smart rtmpd
RTMP server, smart, compact, high performance(c, c++), high concurrency, easy to maintain, easy to deploy, (supports multiple operating systems Windows and Linux, ARM, FreeBSD)
Stars: ✭ 159 (-85.44%)
Mutual labels:  rtsp, hls
Rapidvms
rapidvms(open source VMS/NVR Video Management System/ Network Video Recorder) mail to [email protected] for latest version
Stars: ✭ 370 (-66.12%)
Mutual labels:  rtsp, hls
Rtsp Stream
Out of box solution for RTSP - HLS live stream transcoding. Makes RTSP easy to play in browsers.
Stars: ✭ 349 (-68.04%)
Mutual labels:  rtsp, hls
Jmuxer
jMuxer - a simple javascript mp4 muxer that works in both browser and node environment.
Stars: ✭ 222 (-79.67%)
Mutual labels:  rtsp, hls
Lal
🔥 Golang live stream lib/client/server. support RTMP/RTSP/HLS/HTTP[S]-FLV/HTTP-TS, H264/H265/AAC, relay, cluster, record, HTTP API/Notify, GOP cache. 官方文档见 https://pengrl.com/lal
Stars: ✭ 480 (-56.04%)
Mutual labels:  rtsp, hls
Media Server
RTSP/RTP/RTMP/FLV/HLS/MPEG-TS/MPEG-PS/MPEG-DASH/MP4/fMP4/MKV/WebM
Stars: ✭ 1,363 (+24.82%)
Mutual labels:  rtsp, hls
docker-wyze-bridge
RTMP/RTSP/LL-HLS bridge for Wyze cams in a docker container
Stars: ✭ 1,146 (+4.95%)
Mutual labels:  rtsp, hls
Monibuca
🧩 Monibuca is a Modularized, Extensible framework for building Streaming Server
Stars: ✭ 307 (-71.89%)
Mutual labels:  rtsp, hls
Fastocloud
Self-hosted IPTV/NVR/CCTV/Video service (Community version)
Stars: ✭ 464 (-57.51%)
Mutual labels:  rtsp, hls
Ffmpeg
Mirror of https://git.ffmpeg.org/ffmpeg.git
Stars: ✭ 27,382 (+2407.51%)
Mutual labels:  rtsp, hls
Ios P2p Engine
Let your viewers become your unlimitedly scalable CDN.
Stars: ✭ 31 (-97.16%)
Mutual labels:  hls
Hls Trimming Frame Accuracy
JS Code that given a group of HLS chunks, a start timestamp, and end timestamp it creates one MP4 that contains the original V/A frame accuracy trimmed and perfectly aligned
Stars: ✭ 46 (-95.79%)
Mutual labels:  hls
Video.js
Video.js - open source HTML5 & Flash video player
Stars: ✭ 32,478 (+2874.18%)
Mutual labels:  hls

TravisCI CircleCI CirusCI Snap Status GithubCI

Codacy Badge Coverity Scan Build Status Coverage Status

Release Download Docker Pulls

v4l2rtspserver

This is an streamer feed from :

  • an Video4Linux device that support H264, HEVC, JPEG, VP8 or VP9 capture.
  • an ALSA device that support PCM S16_BE, S16_LE, S32_BE or S32_LE

The RTSP server support :

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

The HTTP server support (available using -S option for capture format that could be muxed in Transport Stream):

  • HLS
  • MPEG-DASH

Dependencies

  • liblivemedia-dev License LGPL > live.2012.01.07 (need StreamReplicator)
  • libv4l2cpp Unlicense
  • liblog4cpp5-dev License LGPL (optional) If liblog4cpp5-dev is not present, a simple log using std::cout is used.
  • libasound2-dev Licence LGPL (optional) If libasound2-dev is not present in the build environment, there will have no audio support.

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 user:password : RTSP user and password
	 -R realm  : use md5 password 'md5(<username>:<realm>:<password>')
	 -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)
	 -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)
	 -B       : V4L2 capture using blocking mode (default use non-blocking mode)
	 -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)
	 -G <w>x<h>[x<f>] : V4L2 capture format (default 0x0x25)
	 
	 ALSA options :
	 -A freq    : ALSA capture frequency and channel (default 44100)
	 -C channels: ALSA capture channels (default 2)
	 -a fmt     : ALSA capture audio format (default S16_LE)
	 
	 device   : V4L2 capture device and/or ALSA device (default /dev/video0)

When audio support is not present, ALSA options are not printed running with -h argument.

Authentification is enable when almost one user is defined. You can configure credentials :

  • using plain text password:

    -U foo:bar -U admin:admin
    
  • using md5 password:

    -R myrealm -U foo:$(echo -n foo:myrealm:bar | md5sum | cut -d- -f1) -U admin:$(echo -n admin:myrealm:admin | md5sum | cut -d- -f1)
    

It is possible to compose the RTSP session is different ways :

  • v4l2rtspserver /dev/video0 : one RTSP session with RTP video capturing V4L2 device /dev/video0
  • v4l2rtspserver ,default : one RTSP session with RTP audio capturing ALSA device default
  • v4l2rtspserver /dev/video0,default : one RTSP session with RTP audio and RTP video
  • v4l2rtspserver /dev/video0 ,default : two RTSP sessions first one with RTP video and second one with RTP audio
  • v4l2rtspserver /dev/video0 /dev/video1 : two RTSP sessions with an RTP video
  • v4l2rtspserver /dev/video0,/dev/video0 : one RTSP session with RTP audio and RTP video (ALSA device associatd with the V4L2 device)

Build

  • Build

      cmake . && make
    

    If live555 is not installed it will download it from live555.com and compile it. If asound is not installed, ALSA will be disabled.
    If it still not work you will need to read Makefile.

  • Install (optional)

      sudo make install
    
  • Packaging (optional)

      cpack .
    

Using Raspberry Pi Camera

This RTSP server works with Raspberry Pi camera using :

  • the opensource V4L2 driver bcm2835-v4l2

    sudo modprobe -v bcm2835-v4l2

  • the closed source V4L2 driver for the Raspberry Pi Camera Module http://www.linux-projects.org/uv4l/

    sudo uv4l --driver raspicam --auto-video_nr --encoding h264

Using 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 -fH264 /dev/video0 /dev/video10 &
v4l2rtspserver /dev/video10 &

Playing HTTP streams

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

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

It is now possible to play HLS url directly from browser :

There is also a small HTML page that use hls.js and dash.js, but dash still not work because player doesnot support MP2T format.

Using Docker image

You can start the application using the docker image :

    docker run -p 8554:8554 -it mpromonet/v4l2rtspserver

You can expose V4L2 devices from your host using :

    docker run --device=/dev/video0 -p 8554:8554 -it mpromonet/v4l2rtspserver

The container entry point is the v4l2rtspserver application, then you can :

  • get the help using :

      docker run -it mpromonet/v4l2rtspserver -h
    
  • run the container specifying some paramters :

      docker run --device=/dev/video0 -p 8554:8554 -it mpromonet/v4l2rtspserver -u "" -H640 -W480 
    
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].