media-server-go
WebRTC media server for go
Functionality
We intend to implement support the following features:
- MP4 multitrack recording support for all WebRTC codecs: H264,VP8,VP9, OPUS and PCMU/A.
- VP9 SVC layer selection
- Simulcast with temporal layer selection
- RTP transport wide congestion control
- Sender side BitRate estimation
- Flex FEC draft 3
- NACK and RTX support
- [RTCP reduced size] (https://tools.ietf.org/html/rfc5506)
- Bundle
- ICE lite
- [Frame Marking] (https://tools.ietf.org/html/draft-ietf-avtext-framemarking-04)
- [PERC double encryption] (https://tools.ietf.org/html/draft-ietf-perc-double-03)
- Plain RTP broadcasting/streaming
- [Layer Refresh Request (LRR) RTCP Feedback Message] (https://datatracker.ietf.org/doc/html/draft-ietf-avtext-lrr-04)
- Raw MediaFrame callback
- Raw RTP Data input
How to use
Yon can see the demos from here Demos
Examples
- WebRTC-Broadcast: WebRTC publish and play
- Raw-RTP-Input: Send raw rtp data into webrtc
- WebRTC-Record: WebRTC record
- RTMP-To-WebRTC: Rtmp to webrtc
- Server-To-Server: WebRTC server relay
- WebRTC-To-RTMP: WebRTC to rtmp
- WebRTC-To-HLS: WebRTC to hls
Install
You should install libtool
and autoconf
automake
before you build
On ubuntu
apt install autoconf
apt install libtool
apt install automake
On macOS
brew install libtool
brew install autoconf
brew install automake
Your compiler should support c++17
, for linux, you should update your gcc/g++
to 7.0+
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update -qq
sudo apt-get install g++-7
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 90
Build the native c/c++ code, see media-server-go-native, it will install openssl
libsrtp
mp4v2
libmediaserver
into /usr/local
git clone --recurse-submodules https://github.com/notedit/media-server-go-native.git
cd media-server-go-native
make
Install mediaserver go lib
go get github.com/notedit/media-server-go