Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| cdn [2025/02/06 01:37] – [Stream-URLs] ischluff | cdn [2025/11/03 12:23] (current) – ischluff | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| < | < | ||
| - | This documentation describes our Livestreaming CDN as of 2024. | + | This documentation describes our Livestreaming CDN as of 2025. |
| The File-CDN for media.ccc.de is described on [[software: | The File-CDN for media.ccc.de is described on [[software: | ||
| Line 13: | Line 13: | ||
| == Architecture | == Architecture | ||
| - | The CDN-Cascade has 6 stages: | + | The CDN-Cascade has 6 stages: Encoder, Ingest, Transcoder, |
| + | {{: | ||
| - | {{: | + | === 1. Encoder |
| - | + | The initial | |
| - | === 1. Master-Encoder | + | The encoding |
| - | The master | + | |
| - | The master | + | |
| The translated audio tracks and the slide video track are optional. | The translated audio tracks and the slide video track are optional. | ||
| - | The master | + | The origin |
| === 2. Ingest | === 2. Ingest | ||
| - | The ingest machines run both [[https:// | + | The ingest machines run both [[https:// |
| Additionally the ingest machines run a stream-api daemon which scrapes the local stream information from both srtrelay and nginx-rtmp and publishes it to consul KV. | Additionally the ingest machines run a stream-api daemon which scrapes the local stream information from both srtrelay and nginx-rtmp and publishes it to consul KV. | ||
| Line 51: | Line 50: | ||
| The transcode updates are also published to the #voc-wok IRC. | The transcode updates are also published to the #voc-wok IRC. | ||
| - | The transcoding outputs are directly pushed with HTTP uploads to the Master relay. To ensure proper retries the uploads are sent over a local http-proxy (https:// | + | The transcoding outputs are directly pushed with HTTP uploads to the Origin relays. To ensure proper retries the uploads are sent over a local http-proxy (https:// |
| - | === 4. Master Relay | + | === 4. Origin Relays |
| - | Runs the upload server (https:// | + | Origin relays run the upload server (https:// |
| The upload server has some additional logic to rewrite the HLS playlists on the fly in order to properly handle stream restarts. | The upload server has some additional logic to rewrite the HLS playlists on the fly in order to properly handle stream restarts. | ||
| - | The segmented streams, thumbnails etc. are served by nginx. | + | The segmented streams, thumbnails etc. are currently |
| === 5. Edge-Relays | === 5. Edge-Relays | ||
| - | The edge relays run nginx with caching proxy config and upstream set to the master | + | The edge relays run nginx with caching proxy config and upstream set to the active origin |
| === 6. Loadbalancer | === 6. Loadbalancer | ||
| Line 96: | Line 95: | ||
| * http:// | * http:// | ||
| - | Currently not active: | + | **Currently not active:** |
| MPEG-DASH (VPx multi-quality + multi-language) | MPEG-DASH (VPx multi-quality + multi-language) | ||
| Line 110: | Line 109: | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | |||
| == Dynamic SRT/RTMP endpoints with RTMP Auth | == Dynamic SRT/RTMP endpoints with RTMP Auth | ||
| SRT and RTMP Endpoints can be created under https:// | SRT and RTMP Endpoints can be created under https:// | ||
| Line 125: | Line 123: | ||
| * Building a live status dashboard which shows the current stream-> | * Building a live status dashboard which shows the current stream-> | ||
| * To gracefully shutdown a relay it could be instructed via consul KV to redirect all clients back to a load balancer while taking it out of the haproxy redirects. That way all clients would be redistributed to different relays. | * To gracefully shutdown a relay it could be instructed via consul KV to redirect all clients back to a load balancer while taking it out of the haproxy redirects. That way all clients would be redistributed to different relays. | ||
| - | * Build master | + | * Build origin |
| * Use DNS rotation on ingest | * Use DNS rotation on ingest | ||
| * Finalize srtrelay meshing to allow pushed streams to be pulled from any ingest machine. | * Finalize srtrelay meshing to allow pushed streams to be pulled from any ingest machine. | ||