# webrtc-streamer **Repository Path**: liwei_lup/webrtc-streamer ## Basic Information - **Project Name**: webrtc-streamer - **Description**: WebRTC streamer for V4L2 capture devices and RTSP sources - **Primary Language**: C++ - **License**: Unlicense - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-11-29 - **Last Updated**: 2023-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Build status](https://travis-ci.org/mpromonet/webrtc-streamer.png)](https://travis-ci.org/mpromonet/webrtc-streamer) [![Release](https://img.shields.io/github/release/mpromonet/webrtc-streamer.svg)](https://github.com/mpromonet/webrtc-streamer/releases/latest) [![Download](https://img.shields.io/github/downloads/mpromonet/webrtc-streamer/total.svg)](https://github.com/mpromonet/webrtc-streamer/releases/latest) [![Docker Pulls](https://img.shields.io/docker/pulls/mpromonet/webrtc-streamer.svg)](https://hub.docker.com/r/mpromonet/webrtc-streamer/) [![Heroku](https://heroku-badge.herokuapp.com/?app=webrtc-streamer)](https://webrtc-streamer.herokuapp.com/) WebRTC-streamer =============== This is a try to stream video sources through WebRTC using simple mechanism. It embeds a HTTP server that implements API and serve a simple HTML page that use them through AJAX. The WebRTC signaling is implemented throught HTTP requests: - /call : send offer and get answer - /hangup : close a call - /addIceCandidate : add a candidate - /getIceCandidate : get the list of candidates The list of HTTP API is available using /help. Nowdays there is 3 builds on [Travis CI](https://travis-ci.org/mpromonet/webrtc-streamer) : * for x86_64 on Ubuntu trusty * for armv7 crosscompiling with gcc-linaro-arm-linux-gnueabihf-raspbian-x64 (this build is running on Raspberry Pi2 and NanoPi NEO) * for armv6+vfp crosscompiling with gcc-linaro-arm-linux-gnueabihf-raspbian-x64 (this build is running on Raspberry PiB and should run on a Raspberry Zero) Dependencies : ------------- It is based on : * [WebRTC Native Code Package](http://www.webrtc.org) * [civetweb HTTP server](https://github.com/civetweb/civetweb) * [h264bitstream](https://github.com/aizvorski/h264bitstream) * [live555](http://www.live555.com/liveMedia) Build =============== Build WebRTC with H264 support ------- mkdir ../webrtc pushd ../webrtc fetch webrtc gn gen out/Release --args='is_debug=false use_custom_libcxx=false rtc_use_h264=true ffmpeg_branding="Chrome" rtc_include_tests=false use_ozone=true rtc_include_pulse_audio=false' ninja -C out/Release popd Build live555 to enable RTSP support(optional) ------- make SYSROOT=/src/build/linux/debian_jessie_amd64-sysroot live555 Build WebRTC Streamer ------- make WEBRTCROOT= WEBRTCBUILD= SYSROOT=/src/build/linux/debian_jessie_amd64-sysroot where WEBRTCROOT and WEBRTCBUILD indicate how to point to WebRTC : - $WEBRTCROOT/src should contains source (default is ../webrtc) - $WEBRTCROOT/src/out/$WEBRTCBUILD should contains libraries (default is Release) - $SYSROOT should point to sysroot used to build WebRTC (default is /) Usage =============== ./webrtc-streamer [-H http port] [-S[embeded stun address]] -[v[v]] [url1]...[urln] ./webrtc-streamer [-H http port] [-s[external stun address]] -[v[v]] [url1]...[urln] ./webrtc-streamer -V -v[v[v]] : verbosity -H [hostname:]port : HTTP server binding (default 0.0.0.0:8000) -S[stun_address] : start embeded STUN server bind to address (default 127.0.0.1:3478) -s[stun_address] : use an external STUN server (default stun.l.google.com:19302) -t[username:password@]turn_address : use an external TURN relay server (default disabled) [url] : url to register in the source list -V : print version Example ----- webrtc-streamer rtsp://217.17.220.110/axis-media/media.amp \ rtsp://85.255.175.241/h264 \ rtsp://85.255.175.244/h264 \ rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov ![Screenshot](snapshot.png) [Live Demo](https://webrtc-streamer.herokuapp.com/) You can access to the WebRTC stream coming from an RTSP url using [webrtcstream.html](html/webrtcstream.html) page with the RTSP url as argument, something like: https://webrtc-streamer.herokuapp.com/webrtcstream.html?rtsp://217.17.220.110/axis-media/media.amp Embed in a HTML page: =============== Instead of using the internal HTTP server, it is easy to display a WebRTC stream in a HTML page served by an external HTTP server. The URL of the webrtc-streamer to use should be given creating the [WebRtcStreamer](http://htmlpreview.github.io/?https://github.com/mpromonet/webrtc-streamer/blob/master/jsdoc/WebRtcStreamer.html) instance : var webRtcServer = new WebRtcStreamer(