This is a proof of concept system for generating a low latency live stream from encoder, to server, to player using entirely open source software end to end. It will render a page with a player in it. The player will display a video that has a test pattern generated by the encoder with an embedded timecode burned into the video. This is the "encoder time" timecode. On top of that there is a time code overlaid on the player. This is the wall clock or player timecode. The difference between these two clocks is your precise end to end latency.
This player will load extra quickly and then play with time a bit to "walk in" the latency. This means it will play faster than real time until it catches up to the latency that you are requesting. Our default here is 2.2 seconds.
Run...
wget https://codeload.github.com/streamlinevideo/low-latency-preview/zip/master && unzip master && rm -r -f master/ && cd low-latency-preview-master/ && ./buildEncoderAndServerUbuntu.sh
You have now built everything. Continue to the run section.
First make sure you have homebrew installed.
Run....
curl -o master.zip https://codeload.github.com/streamlinevideo/low-latency-preview/zip/master && unzip master.zip && cd low-latency-preview-master/ && ./buildEncoderAndServerMacOS.sh
./launchServer.sh
./launchEncoderTestPattern.sh *insert destination hostname of server* *insert a stream name*
Example:
./launchEncoderTestPattern.sh localhost 1234
Oh 💩 here we go!
View your stream at http://localhost:8080/ldash/play/1324/manifest.mpd
Go to that URL and you should see your stream!
To kill the streams...
./killAll.sh
Be impressed by the speed! Be excited by the opportunities for scalability. Learn about the realities of low latency live streaming and how to implement it. You can learn form this and modify parts to build your own own live streaming system. This project itself doesn't have a huge use, the proof of concept of the architecture, the server that we have created, and the documented settings for FFmpeg and dash.js are what is of value to other projects.