All Projects → jordicenzano → lhls-simple-live-platform

jordicenzano / lhls-simple-live-platform

Licence: other
Very simple low latency live platform prototype

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to lhls-simple-live-platform

transport-stream-online-segmenter
Transport stream web based HLS segmenter.
Stars: ✭ 30 (-47.37%)
Mutual labels:  hls, low-latency, lhls
srt2hls
Simple audio HLS streaming server based on Liquidsoap
Stars: ✭ 66 (+15.79%)
Mutual labels:  hls, hls-live-streaming
tms
tms(toy media server) is a toy media server for myself learning media develop. Just for fun.
Stars: ✭ 29 (-49.12%)
Mutual labels:  hls, hls-live-streaming
orcanode
Software for live-streaming and recording lossy or lossless compressed audio (HLS, DASH, FLAC) via AWS S3 buckets. ⭐
Stars: ✭ 23 (-59.65%)
Mutual labels:  hls, hls-live-streaming
Abr Broadcaster
A real time encoder for Adaptive Bitrate Broadcast
Stars: ✭ 80 (+40.35%)
Mutual labels:  hls, low-latency
cassandra-nginx-cdn
Some config files and POC code to use Apache Cassandra as distributed storage for HLS chunks accross multiple datacenters and scripts for converting/transcoding UDP MPEG-TS to HLS and vice versa. The idea is take from Globo.com’s Live Video Platform for FIFA World Cup ’14.
Stars: ✭ 24 (-57.89%)
Mutual labels:  hls, hls-live-streaming
hls-live-thumbnails
A service which will generate thumbnails from a live HLS stream.
Stars: ✭ 49 (-14.04%)
Mutual labels:  hls, hls-live-streaming
aws-clustered-video-streams
A clustered video stream is an AWS architecture that increases the quality and reliability of live events by providing seamless regional failover capabilities for live video steams. Operators can monitor the status of the clustered stream from a single pane of glass and dynamically control from which region the stream consumed by a player origin…
Stars: ✭ 35 (-38.6%)
Mutual labels:  hls, hls-live-streaming
m3u8-parser
A simple HLS playlist parser for Java
Stars: ✭ 100 (+75.44%)
Mutual labels:  hls, hls-live-streaming
Srs
SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT and GB28181.
Stars: ✭ 16,734 (+29257.89%)
Mutual labels:  hls, low-latency
vms
Streaming River IPTV server - proxy frontend
Stars: ✭ 27 (-52.63%)
Mutual labels:  hls
low-latency-system
Everything about low latency system.
Stars: ✭ 48 (-15.79%)
Mutual labels:  low-latency
deadsfu
Dead-simple WebRTC broadcasting. From the browser, or your application. Cloud-native and scalable.
Stars: ✭ 23 (-59.65%)
Mutual labels:  low-latency
roq-samples
How to use the Roq C++20 API for Live Cryptocurrency Algorithmic and High-Frequency Trading as well as for Back-Testing and Historical Simulation
Stars: ✭ 119 (+108.77%)
Mutual labels:  low-latency
stalkerhek
Stalker portal proxy server that allows sharing account on multiple STB boxes and play on VLC.
Stars: ✭ 63 (+10.53%)
Mutual labels:  hls
prophesee ros wrapper
ROS driver for Prophesee event-based sensors
Stars: ✭ 63 (+10.53%)
Mutual labels:  low-latency
HLSCachingReverseProxyServer
A simple local reverse proxy server for HLS segment cache
Stars: ✭ 99 (+73.68%)
Mutual labels:  hls
hms-video-demo-android
HUAWEI Video Kit supports streaming media in 3GP, MP4, or TS format and compliant with HTTP/HTTPS, HLS, or DASH. The Kit also provides abundant playback controls, delivering personalized video experiences to users.
Stars: ✭ 22 (-61.4%)
Mutual labels:  hls
reactor-aeron
A reactive driver for Aeron transport (https://github.com/real-logic/aeron)
Stars: ✭ 43 (-24.56%)
Mutual labels:  low-latency
ZLMediaKit
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11
Stars: ✭ 7,790 (+13566.67%)
Mutual labels:  hls

lhls-simple-live-platform

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:

Block diagram

Block diagram

Installation

  • Launch EC2
    • Type:
      • t2.small (for transmuxing)
      • t2.xlarge (for transcoding from 720p to 720p and 480p)
    • Security groups
      • Open Inbound TCP 1935 for everybody (RTMP)
        • Open Inbound UDP 1935 for everybody (SRT)
      • Open Inbound 9094 for everybody (HTTP)
  • Update the machine sudo yum update -y
  • Install git: sudo yum install git -y
  • (optional) Install tmux: sudo yum install tmux -y
  • Install (compile) ffmpeg
  • Install DejaVu fonts (to do the overlay on transcoding): sudo yum install dejavu-sans-fonts -y
  • Install this repo
cd ~
git clone https://github.com/jordicenzano/lhls-simple-live-platform.git
go get github.com/jordicenzano/go-ts-segmenter
go get github.com/mjneil/go-chunked-streaming-server

Usage (RTMP source)

  • Create a shell to the EC2 machine (tmux recommended), and start webserver in HTTPS
cd ~/go/bin/
./go-chunked-streaming-server
  • Create ANOTHER shell to the EC2 machine (tmux recommended), start RTMP server + segmenter with a multirendion transcoding configuration
cd ~/lhls-simple-live-platform/scripts/
./transcoding-multirendition-rtmp.sh live
  • Open your favorite RTMP client: OBS, Wirecast, Elemental, Wowza Clearcaster, ffmpeg, etc

    • Configure the RTMP URL as: rtmp://[PUBLIC-IP-EC2]:1935/live/stream
    • Recommended short GOP (1s) and (if possible) activate "zerolatency" video encoding mode
    • Start streaming
  • Tested with following players: Safari, Quicktime and ffplay)

    • Use this URL: http://[PUBLIC-IP-EC2]:9094/mrrtmp/playlist.m3u8
  • Example glass to glass latency with this set up: 2.01s Glass to glass latency

Usage (SRT source)

  • Create a shell to the EC2 machine (tmux recommended), and start webserver in HTTPS
cd ~/go/bin/
./go-chunked-streaming-server
  • Create ANOTHER shell to the EC2 machine (tmux recommended), start SRT server + segmenter with a multirendion transcoding configuration
cd ~/lhls-simple-live-platform/scripts/
./transcoding-multirendition-srt.sh live
  • Open your favorite SRT client: OBS, Wowza Clearcaster, ffmpeg, etc

    • Configure the SRT URL as: srt://[PUBLIC-IP-EC2]:1935
    • Recommended short GOP (1s) and (if possible) activate "zerolatency" video encoding mode
    • Start streaming
  • Tested with following players: Safari, Quicktime and ffplay)

    • Use this URL: http://[PUBLIC-IP-EC2]:9094/mrsrt/playlist.m3u8
  • Example glass to glass latency with this set up: 2.54s Glass to glass latency

Notes

  • This is JUST A PROOF OF CONCEPT / PROTOTYPE do not use it in production
    • Example of known problem: If the encoder reconnect for any reason, the live stream finishes
  • There is a lot going on about how to do ABR when you are sending data at "media speed" and NOT at "cable speed". So for multirendtion and chunk transfer you should expect regular players going to the lower BW lane
  • go-chunked-streaming-server does not send 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
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].