Ich habe in einer Anleitung (hier) schon einmal gezeigt, wie man einen „IRL“ (In Reallife – Im echten Leben) Livestream erstellen kann.
Dabei wurde nginx mit dem RTMP-Modul bestückt und der Automatic Low Bitrate Switcher installiert.
Mit dieser Kombination, konnten wir OBS bei Verbindungsverlust automatisch steuern lassen.
In dieser Anleitung zeige ich dir, wie du einen IRL-Livestream mit dem SRT-Protokoll erstellen kannst.
SRT hat den Vorteil, da es recht Latenzarm ist, x265 unterstützt und auch mehrere Verbindungen zum Zielserver erlaubt.
Was du alles tun musst und was es zu beachten gilt, steht hier in der ausführlichen Anleitung beschrieben.
Legen wir los!
Die Anforderungen
Wir benötigen folgendes:
– Einen Linux-Server (Windows / Mac geht nicht!)
– Vollen Root-Zugriff zum System
– Eine Kamera / Stream-Software welche SRT als Streamprotokoll unterstützt
– Ein Stream-Rechner mit OBS (Hier geht Linux, Windows, Mac)
– Zugriff auf die Firewall / Router, um Portfreigaben zu erstellen
– Eine gute Internetanbindung
Optional aber empfehlenswert:
– Eine Domain, um nicht IP-Adressen merken zu müssen
Der Server benötigt folgende Anforderungen:
– min. 1 CPU-Kern
– min. 512MB RAM
– min. 10GB Festplattenspeicher
– LAN-Anbindung (kein WLAN)
WICHTIG: Betreibst du alles Zuhause, benötigst du für eine saubere Verbindung einen Internetanschluss welcher Dual-Stack kann! Du benötigst eine eigene öffentliche IPv4 und IPv6-Adresse! DS-Light führt zu unschönen Verbindungsproblemen!
Kurzum: Nix Vodafone-Billig-Billig-Schrottanschluss auf Kabelbasis.
WICHTIG²: Aktuell unterstützt der SRT-Server nur IPv4! IPv6 kann daher nicht genutzt werden!
Ich werde in dieser Anleitung nicht darauf eingehen, wie man einen Linux-Server einrichtet. Dies habe ich in anderen Videos bereits ausführlich gezeigt.
Diese Anleitung basiert auf Debian 11.
Hier eine kleine Skizze, wie der Netzwerkaufbau ist:
1. Notwendige Pakete installieren
Wir müssen unser System zuerst einmal aktualisieren und anschließend mit notwendigen Paketen bestücken.
Das bekommen wir mit folgenden Befehlen hin:
# apt update && apt upgrade -y # apt install libinput-dev make cmake tcl openssl zlib1g-dev gcc perl net-tools nano ssh git zip unzip tclsh pkg-config cmake libssl-dev build-essential -y
2. SRT installieren
Nun installieren wir uns Secure Reliable Transport (SRT) Protocol.
Das GitHub-Projekt findest du HIER.
Lade dir das Repo herunter und wechsel in den dann verfügbaren Ordner:
# git clone https://github.com/Haivision/srt.git # cd srt
Schicke hier folgende drei Befehle ab:
# ./configure # make # make install
3. Srt Live Server installieren
Jetzt installieren wir noch den Server, welcher später unseren Stream empfängt und an die gewünschten Quellen zur Verfügung stellen kann.
Kleiner Tipp: Geh wieder in das Hauptverzeichnis zurück, wenn du von Schritt 2 noch im SRT-Ordner dich befindest 🙂
Das GitLab Repo findest du HIER.
Lade daher dir das Repo mit folgendem Befehl herunter:
# git clone https://gitlab.com/mattwb65/srt-live-server.git
Wechsel nun in den neuen Ordner und schicke den make-Befehl ab:
# cd srt-live-server # make
Wir benennen nun die Konfigurationsdatei von srt um, weil wir diese gleich von vorne anlegen.
So haben wir zur Not eine Sicherung.
# cp sls.conf sls.bak
Öffne nun den Editor nano und lege die sls.conf-Datei erneut an:
# nano sls.conf
Füge folgenden Inhalt in die Datei ein:
srt { worker_threads 1; worker_connections 300 ; http_port 8181; cors_header *; log_file logs/error.log ; log_level info; server { listen 8280; latency 2000; domain_player play; domain_publisher live; default_sid play/stream/test; backlog 10; idle_streams_timeout 10; app { app_player stream ; app_publisher stream ; } } }
In der Datei musst du nur 3 Dinge ändern.
http_port 8181 –> Ändere den Port auf etwas anderes, sollte er bei dir blockiert sein. Merke dir den Port gut, denn diesen brauchen wir später!
listen 8280 –> Ändere den Port auf etwas anderes, sollte er bei dir blockiert sein. Merke dir den Port gut, denn diesen brauchen wir später!
default_sid play/stream/test –> „test“ ist der Streamkey. Ändere ihn auf etwas besseres ab, um einen unerlaubten Zugriff zu unterbinden. Nutze keine Sonderzeichen! Beispiel: play/stream/jkesdlfghikluethjkedfgh34jkjhgsdfajhgsdjfhg
Speichere die Datei nun ab (STRG + X gefolgt von Y und ENTER).
Nun können wir prüfen, ob alles sauber startet.
Wechsel dazu in den Unterordner bin.
# cd bin
Damit das Tool gleich die korrekten Umgebungsvariablen kennt, schicke folgenden Befehl ab:
# ldconfig
Perfekt, jetzt können wir den SRT-Live-Server einmal starten. Das schaffst du mit diesem Befehl:
# /root/srt-live-server/bin/sls -c /root/srt-live-server/sls.conf
ACHTUNG: Passe ggf. den Pfad auf deine Gegebenheiten an!
Wir starten nun den sls-Server und dieser Prozess bindet die Konfigurationsdatei im übergeordneten Ordner ein.
Der SRT-Live-Server sollte nun ohne Probleme starten.
Drücke STRG+C, um den Server wieder zu beenden.
Damit der Server nun automatisch bei Systemstart gestartet wird, legen wir noch kurz ein SystemD-Service an.
Öffne dazu mit dem Editor nano eine neue Datei:
# nano /etc/systemd/system/srt-live-server.service
Füge hier folgenden Inhalt ein und passe ihn mit den Infos darunter an:
[Unit] Description=SRT Live-Server After=network.target [Service] Type=simple WorkingDirectory=/root/srt-live-server/bin/ ExecStart=/root/srt-live-server/bin/sls -c /root/srt-live-server/sls.conf User=root Group=root Restart=on-failure RestartSec=10 [Install] WantedBy=default.target
Ändere folgendes ab:
WorkingDirectory=Trage hier den Pfad zu dem bin-Ordner des SRT-Live-Servers korrekt ein!
ExecStart=Trage hier den Pfad zu dem bin-Ordner des SRT-Live-Servers und der Konfigurationsdatei korrekt ein!
User=Trage hier ein anderen Benutzer ein, sofern du den Dienst nicht mit dem Root-Account startest.
Group=Trage hier eine andere Gruppe ein, wenn der Benutzer bei „User“ nicht in der Root-Gruppe ist.
Nun müssen wir den Dienst nur noch aktivieren und starten:
# systemctl enable srt-live-server.service # systemctl start srt-live-server.service
4. Automatic Low Bitrate Switcher installieren
Damit OBS Studio nun die Szenen automatisch wechselt, brauchen wir das Tool NOALBS (nginx obs automatic low bitrate switcher).
Öffne die GitHub-Seite des Projekts und lade dir das Archiv für Linux herunter.
# wget https://github.com/715209/nginx-obs-automatic-low-bitrate-switching/releases/download/v2.8.0/noalbs-v2.8.0-x86_64-unknown-linux-musl.tar.gz
Entpacke das Archiv mit folgendem Befehl:
# tar -xf noalbs-v2.8.0-x86_64-unknown-linux-musl.tar.gz
Wir benennen nun den Ordner um, damit er einfacher zu erreichen ist:
# mv noalbs-v2.8.0-x86_64-unknown-linux-musl noalbs
Nun wechseln wir in den Ordner
# cd noalbs
Wunderbar. Nun ist es an der Zeit ALBS mit unseren Werten einzustellen.
Dazu editieren wir die Datei „config.json“ mit einem Texteditor.
# nano config.json
Folgendes musst du anpassen:
user -> name: — Gebe hier deinen Benutzernamen von Twitch an
switcher -> onlySwitchWhenStreaming — Wechsel den Wert von true auf false, um alles offline testen zu können
switcher -> triggers -> low — Setze hier einen Kilobit-Wert, der als Schwellwert gilt. Wird er unterschritten, bist du „offline“. Standard ist 800(kbit)
switcher -> triggers -> rtt — Setze einen Wert, ab wann der Stream wieder als sicher online gilt in Kilobit. Standard ist 2500(kbit)
switchingScenes -> normal — Gebe hier deinen Szenennamen in OBS an, wenn du LIVE bis. Also das Kamerabild.
switchingScenes -> low — Gebe hier einen Szenennamen an, welcher bei schlechter Verbindung genutzt wird. Somit kannst du deine Zuschauer auf eventuelle Unterbrechungen vorbereiten.
switchingScenes -> offline — Gebe hier einen Szenenenamen aus OBS an, wenn deine Internetverbindung weg ist.
streamServer (type NodeMediaServer – NMS) -> enabled — Ändere den Wert von true auf false
streamServer (type SrtLiveServer – SLS) -> enabled — Ändere den Wert von true auf false
streamServer (type SrtLiveServer – SLS2) -> enabled — Ändere den Wert von true auf false
streamServer -> statusUrl — Ändere ggf. hier den Port ab, sofern du ihn in der Konfiguration von SRT Live Server geändert hast
streamServer -> publisher — Ändere hier die URL auf die Vorgaben des SRT Live Servers ab – Beispiel: live/stream/DeinStreamKey
streamServer (nginx) -> enabled — Ändere den Wert von true auf false
software -> host — Trage hier die IP-Adresse deines Rechners ein, auf dem OBS läuft
software -> password — Gebe hier das WebRTC-Passwort von OBS ein oder überlege dir selbst ein super sicheres Kennwort
software -> port — Falls du einen anderen Port als 4455 definiert hast, ändere diesen hier ab
chat -> username — Trage hier deinen Twitch-Nutzernamen ein
chat -> admins — Trage hier die Benutzernamen deiner Chat-Admins ein
language — Wenn alles auf Deutsch laufen soll, trage hier ein de ein
Nach den Anpassungen, speichere alles ab, indem du STRG + X drückst, das ganze mit Y bestätigst und ENTER drückst.
Wir können nun einmal prüfen, ob noALBS sauber starten kann, indem wir das Tool einfach starten.
Führe dazu die launch.sh Datei im Ordner aus:
# ./launch.sh
Es werden wohl Fehlermeldungen erscheinen, dass die Verbindung zu OBS noch nicht hergestellt werden kann.
Das macht nichts. Das machen wir im nächsten Schritt.
Wir wollen nur sicher gehen, dass die Anwendung erst mal ohne Probleme überhaupt starten kann.
Damit noALBS auch automatisch bei Systemstart gestartet wird, legen wir ebenfalls dafür eine SystemD-Datei an.
Öffne deshalb erneut den Editor nano und lege damit eine neue Datei an:
# nano /etc/systemd/system/noalbs.service
Befülle die Datei mit folgendem Inhalt:
[Unit] Description=nginx RTMP Server After=network.target [Service] Type=simple WorkingDirectory=/pfad/zu/noalbs/ ExecStart=/pfad/zu/noalbs/noalbs User=root Group=root Restart=on-failure RestartSec=10 [Install] WantedBy=default.target
Ändere nun folgende Dinge auf deine Bedürfnisse ab:
WorkingDirectory= Editiere hier den Pfad zu deinem noalbs-Ordner. Beispiel: /root/noalbs/
ExecStart= Editiere hier den Pfad zu deinem noalbs-Ordner, indem sich die noalbs und launch.sh Datei befindet. Beispiel: /root/noalbs-version123456/noalbs
User= Setze hier ggf. einen anderen Nutzernamen ein, wenn du noalbs nicht mit dem Root-Nutzer starten willst
Group= Setze hier ggf. einen anderen Gruppennamen ein, wenn du noalbs nicht mit einem Benutzer der Root-Gruppe starten willst
Speichere die Datei an (STRG + X gefolgt von Y und ENTER).
# systemctl enable noalbs.service
Nun ist es an der Zeit, den Server einmal komplett neu zu starten, damit alle Dienste über SystemD gestartet und gesteuert werden können.
Also schick mal ein reboot ab und warte kurz einen Moment.
5. Die Kamera einrichten
Richte deine Streaming-Software nun so ein, das du zu der virtuellen Maschine / Server streamst.
Hierfür gibt es zwei Wege.
Weg Nr. 1: Über das heimische WLAN
Gebe hierzu einfach die lokale Adresse deiner Maschine an, z.B. srt://192.168.0.17:8280/live/stream/test
Weg Nr. 2: Über das Internet / an einen Server im Rechenzentrum
Gebe hierzu die IP-Adresse oder Domain deines Routers / deines Servers an, z.B. srt://123.123.123.123:8280/live/stream/test
Hier gibt es aber noch ein paar Dinge zu beachten!
– test = Der Stream-Key. Kannst du kein Stream-Key angeben, nutze das Beispiel oben. Kannst du einen angeben, ist deine URL srt://123.123.123.123:8280/live/stream und dein Stream-Key ist test
– Steht deine virtuelle Maschine Zuhause, gebe unbedingt im Router den Port 8280 frei, damit du nach Hause streamen kannst! Hast du ein anderen Port in der SRT-Konfiguration bei „server“ angegeben, musst du diesen freigeben!
– Steht dein Server in einem Rechenzentrum, achte darauf dass der Port 8181 und 8280 in der Firewall freigeschaltet ist! Beide Ports müssen von deinem Stream-Gerät (z.B. Smartphone) und OBS erreichbar sein.
– Denke daran, das sich deine öffentliche IP-Adresse bei deinem Internetanschluss Zuhause alle 24 Stunden ändern kann!
Um alles einfach mal zu testen, ist die Android-App „IRL Pro“ recht empfehlenswert.
Es ist ein Fork von Larix Broadcaster, nur komplett kostenfrei.
6. OBS Studio einrichten
Jetzt ist es endlich an der Zeit, OBS Studio einzurichten.
Das ist nun der leichte Part für dich, denn diesen solltest du bereits kennen.
OBS muss nun mit dem Plugin „WebSockets“ ausgestattet werden.
Es ist mittlerweile in der OBS-Standardinstallation bereits enthalten.
Starte einfach OBS Studio.
Klicke oben auf „Werkzeuge“ und dann auf „WebSockets-Servereinstellungen“.
→ Aktiviere den Server
→ Setze den Port auf 4455
→ Aktiviere die Authentifizierung
→ Gebe das sichere Kennwort aus der ALBS-Config ein
Drücke dann auf Okay.
TIPP: Deaktiviere den Websocket-Server solange du deine Szenen einrichtest, ansonsten wird noALBS dir das Leben nun sehr schwer machen! 😉
Super!
Nun erstelle deine Szenen, die du in der ALBS-Config angegeben hast mit dem korrekten Namen.
Richte also die Szenen für „live“, „verbindungsproblem“ und „offline“ ein.
Schmücke daher erst einmal diene Offline-Szene etwas aus.
Bei beiden Quellen mit Kamera-Inhalt, musst du folgendes tun:
1. Füge eine „Medienquelle“ hinzu
2. Entferne alle automatisch gesetzen Haken
3. Bei „Eingabe“ gebe folgende Adresse ein: srt://IP-ADRESSE_oder-_DOMAIN.DE:PORT/live/stream/DeinStreamKey (Beispiel srt://192.168.0.17:8280/live/stream/sadjkhfjksdahfkjasdhfkjashdfkl)
4. Bei Wiederverbindungsverzögerung reduziere diese auf 1s (1 Sekunde)
5. Setze den Haken bei „Hardwaredecodierung verwenden, falls verfügbar“, um eine bessere Performance zu haben
6. Bestätige die Einstellungen mit OK
Passe eventuell auch noch deine Streamingeinstellugen an.
Also Auflösung, Datenrate, FPS und sonstige Einstellungen.
Nun kann es los gehen!
Starte den Stream in OBS, geh mit deiner Kamera raus und lege los! OBS und ALBS kümmern sich um den Rest!
Noch ein paar Fragen zum Schluss.
Geht das wirklich nicht mit Windows?
Nein. Der SRT-Server kann aktuell nur auf Linux installiert werden.
Ein Linux-System ist ohnehin besser als Windows 😉
Kann ich alles inkl. OBS auf einen Server in einem Rechenzentrum installieren?
Ja das geht, dieser muss aber eine grafische Oberfläche installiert haben und sehr sehr sehr viel Power haben, da in der Regel keine Grafikkarte verbaut ist.
Unter 4 Kernen und 8GB RAM würde ich so etwas nicht anfangen.
8 CPU Kerne sind ehr besser. Solch ein Server kostet aber durchaus 50-60€ pro Monat!
Wie finde ich meine öffentliche IP heraus?
Das habe ich HIER in einem Video gezeigt. Du kannst sie auch einfach HIER abrufen.
Wie gebe ich Ports frei?
Das habe ich anhand einer FritzBox einmal HIER gezeigt. Ich kann es aber nicht für alle Router machen. Zum einen hab ich nicht „alle“ Router und zum anderen hab ich dazu keine Zeit 😉
Kann ich mit dem Smartphone streamen?
Ja, ich habe bisher gute Erfahrungen mit der App Larix Broadcaster für Android gemacht.
Leider nötigt der Entwickler nun die Anwender dazu, ein (meiner Meinung nach) überteuertes Premium-Abo abzuschließen.
Es gibt aber mittlerweile eine Alternative App mit dem Namen “IRL Pro” im Google Play Store.
Ist ein Fork von Larix Broadcaster mit ein paar Zusatzfunktionen.
Was komplett quelloffenes, was auch noch brauchbar ist, habe ich leider bisher nicht gefunden.
Mir SRT kann man doch direkt zu OBS Streamen, warum der Umweg über den Server?
Nur so können wir noALBS in Betrieb nehmen.
Wenn wir direkt zu OBS die Daten senden, kann noALBS nicht ermitteln, wenn die Bandbreite zu niedrig ist / keine Daten mehr ankommen.
Ich habe ein DS-Light-Anschluss, was kann ich tun?
Es gibt zwei Möglichkeiten.
1. Rufe beim Provider an und verlange ein Dual-Stack-Anschluss. Manchmal wird das auch als „Business-Paket“ verkauft.
2. Miete einen Server im Internet an, welcher eine IPv4 und IPv6 Anbindung besitzt. Nutze diesen als Stream-Server und ruf über deinen DS-Light-Anschluss nur den Stream ab.
Was nutzt noALBS, um den Streamzustand zu ermitteln?
SRT-Live-Server generiert automatisch eine Seite mit Statistiken.
Diese kann über den http_port abgerufen werden.
Beispiel-URL: http://192.168.0.30:8181/stats