Very simple low latency live platform prototype
This readme shows how to build a very simple live streaming platform based on open source tools with a glass to glass latency around 2s.
To learn more about it see the presentation at syd<video> on 2020/06/24:
sudo yum update -y
sudo yum install git -y
sudo yum install tmux -y
sudo yum install dejavu-sans-fonts -y
cd ~
git clone https://github.com/jordicenzano/lhls-simple-live-platform.git
cd ~
install and compile go-ts-segmenter
go get github.com/jordicenzano/go-ts-segmenter
cd ~
install and compile go-chunked-streaming-server
go get github.com/mjneil/go-chunked-streaming-server
tmux
recommended), and start webserver in HTTPScd ~/go/bin/
./go-chunked-streaming-server
tmux
recommended), start RTMP server + segmenter with a multirendion transcoding configurationcd ~/lhls-simple-live-platform/scripts/
./transcoding-multirendition-rtmp.sh live
Open your favorite RTMP client: OBS, Wirecast, Elemental, Wowza Clearcaster, ffmpeg, etc
rtmp://[PUBLIC-IP-EC2]:1935/live/stream
Tested with following players: Safari, Quicktime and ffplay)
http://[PUBLIC-IP-EC2]:9094/mrrtmp/playlist.m3u8
Example glass to glass latency with this set up: 2.01s
tmux
recommended), and start webserver in HTTPScd ~/go/bin/
./go-chunked-streaming-server
tmux
recommended), start SRT server + segmenter with a multirendion transcoding configurationcd ~/lhls-simple-live-platform/scripts/
./transcoding-multirendition-srt.sh live
Open your favorite SRT client: OBS, Wowza Clearcaster, ffmpeg, etc
srt://[PUBLIC-IP-EC2]:1935
Tested with following players: Safari, Quicktime and ffplay)
http://[PUBLIC-IP-EC2]:9094/mrsrt/playlist.m3u8
Example glass to glass latency with this set up: 2.54s
max-age
headers, so if you want to add a CDN on top of this prototype to scale this platform up you need to set up the expiration manually