cdn

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cdn [2020/02/04 01:21] ischluffcdn [2024/01/29 10:45] (current) ischluff
Line 1: Line 1:
 = CDN = CDN
-Diese Doku beschreibt unser Live-Streaming CDN, wie es seit dem 34C3 gilt. 
  
-== Architektur +<bootnote> 
-Die CDN-Kaskade hat 5 Stufen: Master-Encoder, Transcoder, FanoutTransport-/Master-Relays und schließlich Edge-Relays.+This documentation describes our Livestreaming CDN as of 2024. 
 + 
 +The File-CDN for media.ccc.de is described on [[software:voctoweb]]. 
 +</bootnote> 
 + 
 + 
 + 
 +== The Future of Streaming 
 + 
 +For redundancy and ease of use the CDN is managed by a distributed system built on consul. 
 + 
 +Damit ist es möglich redundante CDN-Master sowie redundante Ingest-Server zu betreiben und trotzdem ein Web-Backend mit allen relevanten Streaming-Infos bereitzustellen. Weiterhin könnte die Streaming-Webseite intelligent auf das Vorhandensein/Fehlen von Streams im CDN reagieren und zusätzliche Metadaten von Encodern verarbeiten. 
 + 
 +Ein weiterer Vorteil des angedachten Setups sind deutlich geringere Latenz durch den fehlenden Fanoutsowie deutlich schnellere Stream-Restarts durch aktive Benachrichtigung der Transcoder
 + 
 +=== Übersicht 
 +{{drawio>diagram1.png}} 
 + 
 +==== Repo Links 
 +  * Stream-apiUpload-ProxyUpload-Server: https://github.com/voc/stream-api 
 +  * rtmp-auth daemon: https://github.com/voc/rtmp-auth 
 +  * Transcoding-Script: https://github.com/voc/transcoding 
 + 
 +== Architecture 
 +The CDN-Cascade has 5 stages: Master-Encoder, Ingest, Transcoder, Master-Relays and finally Edge-Relays.
  
 {{:cdn_overview.png?1200|}} {{:cdn_overview.png?1200|}}
  
 === 1. Master-Encoder === 1. Master-Encoder
 +The master stream encoding is created near the stage on the encoder PC running voctomix or on with other videoencoder for third party streams.
 +The master encoding contains a 1080p25 video signal.
 Das Master-Encoding entsteht auf dem encoder-cube im Saal aus dem Ausgabesignal des Voctomix. Das Master-Encoding enthält den Mix als 1080p25 in h264 sowie die Slides als 1080p5 in h264 mit bis zu drei Audiospuren in AAC (Native, Translated, Translated-2). Wahlweise können die Übersetzerspuren sowie die Slide-Spur weggelassen werden. Alle Spuren werden in einem Matroska-Container verpackt. Das Master-Encoding entsteht auf dem encoder-cube im Saal aus dem Ausgabesignal des Voctomix. Das Master-Encoding enthält den Mix als 1080p25 in h264 sowie die Slides als 1080p5 in h264 mit bis zu drei Audiospuren in AAC (Native, Translated, Translated-2). Wahlweise können die Übersetzerspuren sowie die Slide-Spur weggelassen werden. Alle Spuren werden in einem Matroska-Container verpackt.
  
Line 136: Line 161:
 Die endgültigen Stream-URLs für einen Beispielstream sX sind dann wie folgt: Die endgültigen Stream-URLs für einen Beispielstream sX sind dann wie folgt:
  
-MPEG-DASH (Multi-Qualität + Multi-Lang)+MPEG-DASH (VPx Multi-Qualität + Multi-Lang)
 * http://cdn.c3voc.de/dash/sX/manifest.mpd * http://cdn.c3voc.de/dash/sX/manifest.mpd
  
-HLS (Multi-Qualität + Multi-Lang) +HLS (h.264 Multi-Qualität + Multi-Lang) 
-* http://cdn.c3voc.de/sX_native_hd.m3u8 +* http://cdn.c3voc.de/hls/sX/native_hd.m3u8
-* http://cdn.c3voc.de/sX_native_sd.m3u8 (nur SD, aber Multi-Lang)+
  
-VPx-HD:+Moar HLS 
 +* http://cdn.c3voc.de/hls/sX/translated_hd.m3u8 (auch Multi-Lang, nur anderer Default) 
 +* http://cdn.c3voc.de/hls/sX/translated-2_hd.m3u8 
 +* http://cdn.c3voc.de/hls/sX/native_sd.m3u8 (nur SD, aber trotzdem Multi-Lang) 
 +* http://cdn.c3voc.de/hls/sX/translated_sd.m3u8 
 +* http://cdn.c3voc.de/hls/sX/translated-2_sd.m3u8 
 + 
 +Legacy VPx-HD:
 * http://cdn.c3voc.de/sX_native_hd.webm * http://cdn.c3voc.de/sX_native_hd.webm
 * http://cdn.c3voc.de/sX_translated_hd.webm * http://cdn.c3voc.de/sX_translated_hd.webm
 * http://cdn.c3voc.de/sX_translated-2_hd.webm * http://cdn.c3voc.de/sX_translated-2_hd.webm
  
-VPx-SD:+Legacy VPx-SD:
 * http://cdn.c3voc.de/sX_native_sd.webm * http://cdn.c3voc.de/sX_native_sd.webm
 * http://cdn.c3voc.de/sX_translated_sd.webm * http://cdn.c3voc.de/sX_translated_sd.webm
 * http://cdn.c3voc.de/sX_translated-2_sd.webm * http://cdn.c3voc.de/sX_translated-2_sd.webm
  
-VPx-Slides:+Legacy VPx-Slides:
 * http://cdn.c3voc.de/sX_native_slides.webm * http://cdn.c3voc.de/sX_native_slides.webm
 * http://cdn.c3voc.de/sX_translated_slides.webm * http://cdn.c3voc.de/sX_translated_slides.webm
 * http://cdn.c3voc.de/sX_translated-2_slides.webm * http://cdn.c3voc.de/sX_translated-2_slides.webm
- 
-h264-HD: 
-* http://cdn.c3voc.de/hls/sX_native_hd.m3u8 
-* http://cdn.c3voc.de/hls/sX_translated_hd.m3u8 
-* http://cdn.c3voc.de/hls/sX_translated-2_hd.m3u8 
- 
-h264-SD: 
-* http://cdn.c3voc.de/hls/sX_native_sd.m3u8 
-* http://cdn.c3voc.de/hls/sX_translated_sd.m3u8 
-* http://cdn.c3voc.de/hls/sX_translated-2_sd.m3u8 
- 
-h264-Slides: 
-* http://cdn.c3voc.de/hls/sX_native_slides.m3u8 
-* http://cdn.c3voc.de/hls/sX_translated_slides.m3u8 
-* http://cdn.c3voc.de/hls/sX_translated-2_slides.m3u8 
  
 Audio-MP3: Audio-MP3:
Line 182: Line 198:
 * http://cdn.c3voc.de/sX_translated.opus * http://cdn.c3voc.de/sX_translated.opus
 * http://cdn.c3voc.de/sX_translated-2.opus * http://cdn.c3voc.de/sX_translated-2.opus
- 
  
 == Loadbalancer == Loadbalancer
-Neben den Transport- und Edge-Relays gibt es noch zwei Loadbalancer:+Neben den Transport- und Edge-Relays gibt es noch drei Loadbalancer:
  
   * ''lb.dus.c3voc.de''   * ''lb.dus.c3voc.de''
   * ''lb.alb.c3voc.de''   * ''lb.alb.c3voc.de''
 +  * ''lb.dort.c3voc.de''
  
-Diese sind sowohl für die Domains ''streaming.media.ccc.de'' als auch für ''cdn.c3voc.de'' zuständig. Im DNS sind für beide Domains beide Server angegeben, so dass Clients per statistischem Round-Robin auf einen der beiden Server verteilt werden.+Diese sind sowohl für die Domains ''streaming.media.ccc.de'' als auch für ''cdn.c3voc.de'' zuständig. Im DNS sind für beide Domains alle Server angegeben, so dass Clients per statistischem Round-Robin auf die Loadbalancer verteilt werden.
  
 === streaming.media.ccc.de === streaming.media.ccc.de
Line 202: Line 218:
 == RTMP Ingest == RTMP Ingest
 Für Spezialanwendungen (z.B. Cam-Only Streaming im Fritz-Studio) existieren die RTMP-Endpunkte ''q1'' und ''q2'' auf ''ingest.c3voc.de''. Für Spezialanwendungen (z.B. Cam-Only Streaming im Fritz-Studio) existieren die RTMP-Endpunkte ''q1'' und ''q2'' auf ''ingest.c3voc.de''.
-Die Push-Targets lauten ''%%rtmp://ingest.c3voc.de/stream/q1%%'' bzw. ''q2''. Eine Systemd-Unit setzt diese dann auf Icedist-Ströme gleichen Namens um, von wo Transcoding und Fanout wie oben beschrieben seinen Weg nehmen.+Die Push-Targets lauten ''%%rtmp://ingest.c3voc.de/stream/q1%%'' bzw. ''q2''. Eine Systemd-Unit setzt diese dann auf Icecast-Ströme gleichen Namens um, von wo Transcoding und Fanout wie oben beschrieben automatisch ihren Weg nehmen.
  
 Achtung: Aufgrund der langen rtmp-Timeouts in ffmpeg kann es bis zu 40 Sekunden dauern, bis die Streams auftauchen und weitere 30 Sekunden, bis alle Formate zur Verfügung stehen. Keine Ungeduld. Achtung: Aufgrund der langen rtmp-Timeouts in ffmpeg kann es bis zu 40 Sekunden dauern, bis die Streams auftauchen und weitere 30 Sekunden, bis alle Formate zur Verfügung stehen. Keine Ungeduld.
 +
 +=== Dynamische endpunkte mit rtmp-auth
 +RTMP Endpunkte können unter https://ingest.c3voc.de/backend/ (passwort im keepass unter ansible/stream-api/htpasswd) erstellt werden. Nach dem Anlegen kann der Stream auf ingest gepusht werden.
 +
 +Die RTMP-Url für den endpunkt ''stream/qtest23'' mit auth token lautet z.B.: ''%%rtmp://ingest.c3voc.de/stream/qtest23?auth=token%%''
 +
 +
  • cdn.1580775719.txt.gz
  • Last modified: 2020/02/04 01:21
  • by ischluff