All Projects → andreymal → live555ProxyServerEx

andreymal / live555ProxyServerEx

Licence: LGPL-3.0, GPL-3.0 licenses found Licenses found LGPL-3.0 COPYING.LESSER GPL-3.0 COPYING
Improved version of the "LIVE555 Proxy Server"

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to live555ProxyServerEx

rtsp-video-server
RTSP video streaming server implementation based on Live555 and FFmpeg
Stars: ✭ 36 (+2.86%)
Mutual labels:  rtsp, live555
live555helper
Helper for live555
Stars: ✭ 53 (+51.43%)
Mutual labels:  rtsp, live555
Aquila
IPCamera, aim to support V4L2/UVC/RaspberryPi/Hisi/XXX SDK production
Stars: ✭ 173 (+394.29%)
Mutual labels:  rtsp
Zsgx1hacks
Hacks for ZS-GX1 IP Camera and various Goke GK7102 based IP Cameras
Stars: ✭ 251 (+617.14%)
Mutual labels:  rtsp
Ffmpegandroid
android端基于FFmpeg实现音频剪切、拼接、转码、编解码;视频剪切、水印、截图、转码、编解码、转Gif动图;音视频合成与分离,配音;音视频解码、同步与播放;FFmpeg本地推流、H264与RTMP实时推流直播;FFmpeg滤镜:素描、色彩平衡、hue、lut、模糊、九宫格等;歌词解析与显示
Stars: ✭ 2,858 (+8065.71%)
Mutual labels:  rtsp
Camerattack
An attack tool designed to remotely disable CCTV camera streams (like in spy movies)
Stars: ✭ 192 (+448.57%)
Mutual labels:  rtsp
Jmuxer
jMuxer - a simple javascript mp4 muxer that works in both browser and node environment.
Stars: ✭ 222 (+534.29%)
Mutual labels:  rtsp
Gin Rtsp
基于Gin + WebSocket + JSMpeg,在HTML页面上直接播放RTSP视频流。
Stars: ✭ 136 (+288.57%)
Mutual labels:  rtsp
Yi Hack Allwinner
Custom firmware for Yi 1080p camera based on Allwinner platform
Stars: ✭ 243 (+594.29%)
Mutual labels:  rtsp
Videostreamer
Stream video (e.g. RTSP) to an HTML5 video element (MP4)
Stars: ✭ 208 (+494.29%)
Mutual labels:  rtsp
Rtsp.player.android
RTSP player for Android / IP camera viewer
Stars: ✭ 199 (+468.57%)
Mutual labels:  rtsp
Viseron
Self-hosted NVR with object detection
Stars: ✭ 192 (+448.57%)
Mutual labels:  rtsp
Cameradar
Cameradar hacks its way into RTSP videosurveillance cameras
Stars: ✭ 2,775 (+7828.57%)
Mutual labels:  rtsp
Media Stream Library Js
JavaScript library to handle media streams on the command line (Node.js) and in the browser.
Stars: ✭ 192 (+448.57%)
Mutual labels:  rtsp
camera-live-streaming
Camera Live Streaming with Flask and Open-CV
Stars: ✭ 69 (+97.14%)
Mutual labels:  rtsp
Androidshow
通过MediaProjectionManager采集android屏幕视频流,app中搭建简单rtsp server与客户端通信,通过rtp 协议传输视频流,vlc等客户端来观看手机的屏幕实时视频
Stars: ✭ 144 (+311.43%)
Mutual labels:  rtsp
Gear Lib
Gear-Lib, C library for IOT Embedded Multimedia and Network
Stars: ✭ 2,381 (+6702.86%)
Mutual labels:  rtsp
Nodemediaclient Ios
NodeMedia RTMP/RTSP/HTTP Play/Publish Client SDK for iOS
Stars: ✭ 221 (+531.43%)
Mutual labels:  rtsp
mini
OpenSource Mini IP camera streamer
Stars: ✭ 64 (+82.86%)
Mutual labels:  rtsp
Plate-Minder
Monitor a video source for license plates and record them. Zero cloud dependencies.
Stars: ✭ 106 (+202.86%)
Mutual labels:  rtsp

live555ProxyServerEx

This is improved version of LIVE555 Proxy Server that supports configuration files.

The "LIVE555 Proxy Server" is a unicast RTSP server - built from the "LIVE555 Streaming Media" software - that acts as a 'proxy' for one or more 'back-end' unicast or multicast RTSP/RTP streams (i.e., served by other server(s)).

The key feature of a proxy server is that it reads each 'back-end' stream only once, regardless of how many separate clients are streaming from the proxy server. This makes the proxy server ideal, for example, for streaming from a RTSP-enabled video camera (which might not be able to handle more than one connection at a time).

                                                      --> [RTSP client1]
[back-end RTSP/RTP stream] --> [LIVE555 Proxy Server] --> [RTSP client2]
                                                      ...
                                                      --> [RTSP clientN]

For more information see the official documentation.

Build instructions

(only linux-64bit is supported now)

  • Install latest version of vanilla LIVE555:

    • Debian/Ubuntu: sudo apt-get install livemedia-utils liblivemedia-dev
    • Arch Linux: sudo pacman -S live-media
    • from source (2018.09.10 was tested):
      • build using the official documentation: http://www.live555.com/liveMedia/#config-unix
      • install *.a libraries using sudo make install (you can put custom DESTDIR in your live555 config file (not proxy config file!) or use something like checkinstall)
      • put LIBRARIES_DIR = /usr/local/lib to your config file
      • use LIB_SUFFIX = a in your config file

    Make sure the development files (e.g. /usr/include/liveMedia or /usr/local/include/liveMedia) are available

  • Copy config-example.linux-64bit to config.linux-64bit and edit it. You may want to replace LIBRARIES_DIR and INCLUDES_PREFIX or change the compiler (see also example for Ubuntu 18.04 with gcc: config-example-ubuntu.linux-64bit)

    • Use LIB_SUFFIX = a for static linking
    • Use LIB_SUFFIX = so for dynamic linking
  • Generate Makefile using ./genMakefiles linux-64bit

  • make

  • Then live555ProxyServerEx executable file will be available

Configuration file

While you can use command-line arguments as with vanilla live555ProxyServer, you also can create a configuration file and load it using -c config.cfg option. It has INI format.

[general] section describes global options:

  • verbosity: 0 is default, 1 is equivalent to -v, 2 is equivalent to -V;

  • stream_rtp_over_tcp (boolean) is equivalent to -t;

  • try_standard_port_numbers (boolean): if 1 (default), then proxy server tries to use port 554 or 8554 if rtsp_server_port failed;

  • server_tunneling_over_http (boolean): if 1 (default), then proxy creates a HTTP server for RTSP-over-HTTP tunneling;

  • server_tunneling_over_http_port (0..65535): if 0 (default), then proxy tries to use port 80, 8000 or 8080 for RTSP-over-HTTP tunneling; a non-zero value means the use of a specific port;

  • rtsp_server_port (1..65535, default 554) is equivalent to -p;

  • register_requests (boolean) is equivalent to -R;

  • username_for_register and password_for_register are equivalent to -U username password;

  • single_stream_name: name of the stream if there is only one proxied URL (default proxyStream);

  • multiple_stream_name: names of the streams if there are multiple proxied URLs, must have %d for stream number (default proxyStream-%d);

  • out_packet_max_size (unsigned integer): changes OutPacketBuffer::maxSize value. If you see something like The total received frame size exceeds the client's buffer size or The input frame data was too large for our buffer size, you can try to increase this value (default is 2000000 — 2 megabytes).

[auth] section is a list of usernames and passwords. If this is not empty, then proxy server will require authentication. Example:

[auth]
username = admin
password = 123456

username = alice
password = 777bob777

[streams] section is a list of proxied streams. Every stream must have URL and stream name. Example:

[streams]
url = rtsp://192.168.69.100:554/onvif1
name = office

url = rtsp://10.0.2.66:38888/h264_ulaw.sdp
name = android_ipwebcam

These streams will be proxied as rtsp://[proxy_ip]:[proxy_port]/office and rtsp://[proxy_ip]:[proxy_port]/android_ipwebcam.

[streamparams] section has additional options for [streams] section. These options does not affect other config files or command-line arguments:

  • username and password are used for connection to proxied streams;

  • tunnel_over_http_port is equivalent to -T.

-u and -T command-line options affects only command-line streams.

[include] allows you to use multiple config files. They will be loaded in the specified order. Example:

[include]
path = proxyserver.d/auth.cfg
path = proxyserver.d/office.cfg
path = proxyserver.d/android_ipwebcam.cfg

Configuration in the files that were read later has higher priority. (Note that [auth] sections will be merged and [streamparams] section affects only current file.)

Command-line arguments have higher priority than any config files.

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].