All Projects → snowem → snowem

snowem / snowem

Licence: Apache-2.0 License
Snowem is a lightweight live streaming server, based on webrtc technology. Its design mainly focuses on simplicity, scalability and high performance.

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
TeX
3793 projects
CMake
9771 projects
Makefile
30231 projects
M4
1887 projects

Projects that are alternatives of or similar to snowem

Srs
SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT and GB28181.
Stars: ✭ 16,734 (+22823.29%)
Mutual labels:  webrtc, sfu, video-streaming
opentok-react-native
React Native live video streaming demo app using Open-Tok
Stars: ✭ 36 (-50.68%)
Mutual labels:  livestream, video-streaming
dewdle
A remote video-feed drawing tool (telestrator) for streaming and broadcast environments.
Stars: ✭ 29 (-60.27%)
Mutual labels:  broadcasting, video-streaming
loowid
Webconference solution based on webrtc
Stars: ✭ 92 (+26.03%)
Mutual labels:  webrtc, videoconference
TVGemist
An *Unofficial* Uitzending Gemist application for  TV
Stars: ✭ 23 (-68.49%)
Mutual labels:  livestream, broadcast
Web-Broadcasting-Software
Broadcasting software for the web. (WBS)
Stars: ✭ 138 (+89.04%)
Mutual labels:  livestream, broadcast
UitzendingGemist
An *Unofficial* Uitzending Gemist application for Apple TV 4 (**deprecated, use TV Gemist ☝🏻**)
Stars: ✭ 48 (-34.25%)
Mutual labels:  livestream, broadcast
Nginx Vod Module
NGINX-based MP4 Repackager
Stars: ✭ 1,378 (+1787.67%)
Mutual labels:  livestream, video-streaming
amazon-ivs-chime-web-demo
A demo web application intended as an educational tool for demonstrating how to load and play Amazon IVS streams alongside the Amazon Chime SDK.
Stars: ✭ 35 (-52.05%)
Mutual labels:  livestream, video-streaming
data-transport
A generic and responsible communication transporter(iframe/Broadcast/Web Worker/Service Worker/Shared Worker/WebRTC/Electron, etc.)
Stars: ✭ 27 (-63.01%)
Mutual labels:  webrtc, broadcast
foxrtc
media sdk based on webrtc
Stars: ✭ 36 (-50.68%)
Mutual labels:  webrtc, video-streaming
Mediadevices
Go implementation of the MediaDevices API.
Stars: ✭ 197 (+169.86%)
Mutual labels:  livestream, webrtc
P2p Cdn Sdk Javascript
Free p2p cdn github javascript sdk to reduce video streaming costs of live and on demand video using webrtc by upto 90% and improve scalability by 6x - 🚀 Vadootv 🚀
Stars: ✭ 158 (+116.44%)
Mutual labels:  livestream, webrtc
MatrixLib
Lightweight header-only matrix library (C++) for numerical optimization and machine learning. Contact me if there is an exciting opportunity.
Stars: ✭ 35 (-52.05%)
Mutual labels:  broadcasting, broadcast
Nile.js
Server
Stars: ✭ 1,757 (+2306.85%)
Mutual labels:  livestream, webrtc
pyrite
Pyrite is a web(RTC) client for the Galène videoconference server.
Stars: ✭ 253 (+246.58%)
Mutual labels:  sfu, video-streaming
Tubumu.Abp.Meeting
An abp module to create meeting app quickly.
Stars: ✭ 15 (-79.45%)
Mutual labels:  webrtc, videoconference
Owncast
Take control over your live stream video by running it yourself. Streaming + chat out of the box.
Stars: ✭ 5,382 (+7272.6%)
Mutual labels:  livestream, broadcasting
Ksylive ios
金山云直播SDK [ iOS推流+播放 ]融合版 支持美颜滤镜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Audio Mixer)、混响(Reverb)、画中画(PIP)
Stars: ✭ 861 (+1079.45%)
Mutual labels:  livestream, video-streaming
KnzkLive
No ads, Unlimited, Open-Source Live Streaming Service.
Stars: ✭ 46 (-36.99%)
Mutual labels:  broadcasting, broadcast

Snowem is a lightweight live streaming server, based on webrtc technology. Snowem has three built-in subsystems.

  • RESTful Web Service is used for channel management.
  • Websocket Sevrer plays a role of signaling service in WebRTC stack.
  • Media Server is basically SFU in WebRTC stack, it handles ICE protocol and forward media streams among peers.

Compile and setup Snowem

Snowem depends on the following libraries to build:

  • libopenssl.
  • libevent v2.1.xxx with openssl support.
  • libnettle.
  • libsofia-sip-ua.
  • libsrtp.
  • libconfig.
  • libbsd

Notes:

  • on Ubuntu system, one may install the following packages:
apt-get install libbsd-dev libbsd0 libssl1.0.0 libssl-dev libevent-dev \
libsofia-sip-ua-dev libsofia-sip-ua0 libsrtp0 libsrtp0-dev libnettle6 \
nettle-dev libconfig9 libconfig-dev libbsd0 libbsd-dev
  • for installing libevent 2.1.xx, one may do the following:
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
tar xfz libevent-2.1.8-stable.tar.gz 
cd libevent-2.1.8-stable
./configure --prefix=/usr/local
make && make install
  • on Ubuntu system, supporting ffmpeg requires to install the following packages:
apt-get install libavutil-dev libavresample-dev libavfilter-dev\
libavdevice-dev libavcodec-dev libavformat-dev

To build Snowem, execute the following commands:

git clone https://github.com/snowem/snowem.git
cd snowem
git submodule init
git submodule update
mkdir build
cd build
cmake ..
make
make install

Run Snowem

The configuration file is written in format of libconfig. The sample file is available at snowem.conf.

# General settings
cert_file = "<path-to-cert-file>"
key_file = "<path-to-key-file>"

# Websocket settings
wss_bind_ip = "0.0.0.0"
wss_bind_port = 8443

# Log level: TRACE=0, DEBUG=1, INFO=2, WARN=3, ERROR=4, FATAL=5
log_level = 1
log_file_maxsize = 10000000
log_rotate_num = 10
base_log_path = "<path-to-dir>"

To run Snowem, simple execute:

snowem <path-to>/snowem.conf

Check live demo at here.

Example

Source code of example is available at here.

To publish atream: if no camera available, then video file can be used as media source, check here.

var config = {
    'type': 'camera',
    'localNode': document.getElementById('localVideo'),
    'remoteNode':  document.getElementById('remoteVideo'),
    'media': {
      'audio': true,
      'video': true,
    },
  }
  var publishStream = new snowem.Stream(host, 8443)
  publishStream.publish(config)

To play a remote stream: to play a remote stream, you need stream id of the remote stream.

var config = {
  'streamid': streamId,
  'remoteNode':  document.getElementById('remoteVideo'),
  'audio': true,
  'video': true
 };
var playStream = new snowem.Stream(host, 8443)
playStream.play(config)
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].