„IRL“-Livestream erstellen – Automatischer Szenenwechsel bei Verbindungsverlust

ACHTUNG: Es gibt eine neue, etwas einfachere Anleitung! Diese findest du HIER.


Du möchtest mit deiner Kamera raus gehen und von dort einen Livestream starten, möchtest aber deinen Zuschauern nicht dauerhaft deine Verbindungsprobleme mit einem „Offline“ zeigen?
Wie wäre es, wenn dein heimischer Rechner oder ein Server im Rechenzentrum für dich streamt, du dein Signal dort hin schickst und bei Verbindungsverlust eine Info-Szene eingeblendet wird?
Wäre doch super oder?

Mit dieser Anleitung, kannst du dir dein eigenen IRL-Stream-Server erstellen.
Er überwacht dein ankommendes Signal und schaltet ab einem gewissen Schwellwert automatisch auf eine andere Szene in OBS-Studio.

Diese Anleitung erklärt die Einrichtung in einer virtuellen Maschine. Damit kannst du das Setup problemlos bei dir Zuhause nachmachen!

Los gehts!


Was brauchen wir?
– Einen Linux-Server (Debian, Ubuntu, Mint empfohlen)
– Root-Rechte auf dem Server
– Optional für Heimrechner: Ein virtuellen Computer (VMware, Virtual Box)
– Optional aber Empfohlen: Eine Firewall und Portfreigaben
– Optional aber Empfohlen für ein Heimsetup: DNS-Dienste wie DynDNS
– Eine gute Internetverbindung am Stream-PC
– Einen Kanal auf einer Streamingplattform wie Twitch, YouTube & Co.

Alles am Start?

1. Installiere dir die virtuelle Maschine oder buche dir ein Server.

Wie das geht, habe ich HIER in einem Video schon einmal ausführlich gezeigt.
Du kannst aber auch in einem Rechenzentrum einen Server mieten und diesem zum Streamen nutzen.
Dieser braucht keine großen Anforderungen, um deinen Stream zu empfangen und an deine OBS-Installation weiterzuleiten.
Die virtuelle Maschine braucht folgende Spezifikationen
– 1 CPU
– min. 512MB RAM
– 15GB Festplatte
– Netzwerkanbindung (LAN Empfohlen)

2. Installiere ein Betriebssystem

Hier liegt meine Empfehlung bei Debian (aktuell in der Version 10).
Es ist schlank und hat alles mit dabei, was wir gleich brauchen.
Ich habe hier eine Bildergalaire mit allen Seiten der Installation. Schau sie dir an und setze die Parameter passend für dich.
Was alles bei einer Debian-Installation zu beachten ist, habe ich jetzt hier absichtlich weg gelassen, da das ein ganz anderes Thema ist.

Eine ausführliche Anleitung wie du eine virtuelle Maschine erstellen kannst, habe ich HIER erstellt.

Diese Diashow benötigt JavaScript.

3. Installiere OpenSSH für den bequemen Zugriff über dein Hauptsystem (via SSH)

Logge dich in deinem Linux-System ein und werde zum Root.
Debian: # su
Ubuntu / Mint: # sudo su

Installiere jetzt den OpenSSH-Server

# apt install openssh-server -y

Nun kannst du dich via IP-Adresse auf deinem Server mit z.B. Putty aufschalten.
Die IP-Adresse des Systems findest du mit folgendem Befehl heraus:

# ip address

Logge dich nun am besten via Putty auf deinem Server über SSH ein, da man damit recht leicht Dinge kopieren kann.
So musst du nicht alle Befehle abtippen.

4. Installiere notwendige Software

Wir müssen jetzt einiges installieren. Daher am besten den langen Befehl kopieren und einfach abschicken.

# apt update && apt upgrade -y
# apt install nano htop iftop git nodejs npm build-essential libpcre3 libpcre3-dev libssl-dev tar unzip make git zlib1g zlib1g-dev libssl-dev screen -y

5. nginx + rtmp installieren

Die aktuellste Version von nginx findest du HIER und die des RTMP-Tools HIER.
Meine Befehle basieren auf der Version, die zur Zeit der Erstellung dieser Anleitung aktuell waren.

Lade dir nginx + rtmp herunter und entpacke die beiden Archive.

# wget https://nginx.org/download/nginx-1.19.1.tar.gz
# wget https://github.com/sergey-dryabzhinsky/nginx-rtmp-module/archive/dev.zip
# tar -xf nginx-1.19.1.tar.gz
# unzip dev.zip

Wechsel in das nginx-Verzeichnis und lass nginx mit dem RTMP-Modul installieren.

# cd nginx-1.19.1
# ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-dev
# make
# make install

6. nginx OBS Automatic low bitrate switcher installieren

Nun kommt unser wichtigstes Tool. Der Szenenswitcher bei Verbindungsverluste!

Wechsel zuerst in ein Verzeichnis, wo du etwas Platz zum „spielen“ hast.
Am besten in /home/DEIN-NUTZERNAME
Lade dir das Tool herunter:

# git clone https://github.com/715209/nginx-obs-automatic-low-bitrate-switching.git
# cd nginx-obs-automatic-low-bitrate-switching

Nun installieren wir es:

# npm install --production

Okay, als nächstes statten wir nginx mit der passenden Konfiguration aus. Die bringt ABRS (automatic low bitrate switcher) direkt mit.

# cd /PFAD/ZUM/ORNDER/nginx-obs-automatic-low-bitrate-switching/nginx/conf/
# cp nginx.conf /usr/local/nginx/conf/nginx.conf

Nun legen wir noch die Statistik-Datei in unserem Webserververzeichnis ab.

# cp /home/NUTZERNAME/nginx-obs-automatic-low-bitrate-switching/nginx/html/stat.xsl /usr/local/nginx/html

Nun müssen wir nur noch die Config auf unsere Bedürfnisse anpassen.
Öffne sie nun mit einem Editor (z.B. nano) und ändere eine Zeile ab.

nano /usr/local/nginx/conf/nginx.conf

Ändere die Zeile des Home-Verzeichnisses ab.

nano /usr/local/nginx/html/stat.xsl

Speichere die Datei mit STRG + X und Y mit ENTER ab.

Wunderbar. Nun ist es an der Zeit ALBS mit unseren Werten einzustellen.
Wechsel daher in das Hauptverzeichnis von ALBS und editiere die config.json Datei mit einem Editor.
Du musst folgende Werte auf deine Wünsche anpassen:

# nano /home/NUTZERNAME/nginx-obs-automatic-low-bitrate-switching/config.json

Damit OBS korrekt arbeitet, gibt es den Abschnitt „obs“. Diesen solltest du auf deine Gegebenheiten anpassen.

„ip“: => Trage hier deine IP-Adresse des Rechners ein, aufdem OBS Studio läuft (z.B. 192.168.178.15)
„password“: => Trage hier das Passwort des Websocket-Plugins aus OBS Studio ein. Hinterlege ein sicheres Kennwort!
„normalScene“: => Gebe hier den Namen der Szene an, die deine Kamera beinhaltet. Dies ist die „LIVE“-Szene.
„offlineScene“: => Gebe hier den Namen der Szene an, wenn du Offline bist und keine Internetverbindung hast.
„lowBitrateScene“: => Gebe hier den Namen der Szene an, die für die Zuschauer darauf hinweist, das deine Verbindung aktuell schlechter wird.
„refreshScene“: => Gebe hier den Namen der Szene an, wenn deine Internetverbindung wieder vorhanden ist und OBS Studio auf LIVE umschwenken kann. (Kann als Überblenung genutzt werden)
„lowBitrateTrigger“: => Gebe einen Wert in kbps an, der bei unterschreiten die Szene wechseln soll. 300 ist z.B. ganz gut.
„refreshSceneterval“: => Gebe hier einen Wert in Millisekunden an, wie oft das Script die aktuelle Lage prüfen soll. Gut sind 5 Sekunden, also 5000.
„onlySwitchWhenStreaming“: => Für „Trockenübungen“ stell den Wert auf false, damit das Script auch arbeitet, wenn du nicht streamst.

Wenn du noch eine Twitch-Chat-Integration brauchst, kannst du bei „twitchChat“ noch ein paar Parameter anpassen.

„channel“: => Gebe hier den Kanalnamen deines Twitch-Kanals an.
„botUsername“: => Hast du einen Bot-Account, gebe hier den Nutzernamen an. Ansonsten nutze einfach deinen.
„oauth“: => Gebe hier einen OAuth-Token an. Diesen kannst du HIER generieren lassen.
„enable“: => Mit true ist der Chat-Modus aktiv, mit false kannst du die Twitch-Chat-Integration komplett abschalten.
„prefix“: => Ein Symbol, mit dem ein Chat-Befehl erkannt werden soll. Standardgemäß ein Ausrufezeichen (!befehl)
„adminUsers“: Gebe hier die Benutzernamen an, die als Admin hinterlegt sein sollen. Diese Personen können dem Bot Befehle zuschicken.
Der Rest ist freiwillig und eigentlich selbsterklärend.

Speichere alles ab. (STRG + X und Y gefolgt von ENTER)

Wir legen uns noch zur bequemen Bedienung eine Startdatei für ALBS an.
Lege diese im Verzeichnis von LBRS-Verzeichnis an.

# nano ALBS.sh

Befüllte die Datei nun mit folgendem Inhalt:

screen -S ALBS npm start

Speichere die Datei ab und mach sie ausführbar:

# chmod +x ALBS.sh

7. Nginx starten

Nun starten wir nginx, damit wir dort hin streamen können.
Das funktioniert mit folgendem Befehl:

# /usr/local/nginx/sbin/nginx

 

8. Low Bitrate Switcher starten

# ./ALBS.sh


Das Tool sollte nun laufen. Mit STRG + D gefolgt von einem A kannst du den Screen verlassen.

9. Die Streamingsoftware für unterwegs einrichten

Richte deine Streaming-Software nun so ein, das du zu der virtuellen Maschine 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. rtmp://192.168.178.99:1935/publish/live

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. rtmp://123.123.123.123:1935/publish/live

Hier gibt es aber noch ein paar Dinge zu beachten!
live = Der Stream-Key. Kannst du kein Stream-Key angeben, nutze das Beispiel oben. Kannst du einen angeben, ist deine URL rtmp://123.123.123.123:1935/publish/ und dein Stream-Key ist live
– Steht deine virtuelle Maschine Zuhause, gebe unbedingt im Router den Port 1935 frei, damit du nach Hause streamen kannst!
– Steht dein Server in einem Rechenzentrum, achte darauf dass der Port 1935 in der Firewall freigeschaltet ist!
– Denke daran, das sich deine öffentliche IP-Adresse bei deinem Internetanschluss Zuhause alle 24 Stunden ändern kann!

10. OBS Studio anpassen

Das ist nun der leichte Part für dich, denn diesen solltest du bereits kennen.

OBS muss nun mit dem Plugin „WebSockets“ ausgestattet werden.
Das findest du HIER als Download.
Installiere das Plugin in deinem OBS.
>> Ich zeige hier nicht wie das geht, da es unterschiedliche Installationsmethoden für die verschiedenen Betriebssysteme gibt!

Ist es installiert, starte OBS Studio.
Klicke oben auf „Werkzeuge“ und dann auf „WebSockets-Servereinstellungen“.
→ Aktiviere den Server
→ Setze den Port auf 4444
→ Aktiviere die Authentifizierung
→ Gebe das sichere Kennwort aus der ALBS-Config ein
Drücke dann auf Okay.

Super!

Nun erstelle deine Szenen, die du in der ALBS-Config angegeben hast mit dem korrekten Namen.
Füge die gewünschten Quellen noch hinzu und schon kann es los gehen!

Als Quelle wähle VLC-Player aus und füge eine neue URL in die Playlist hinzu.
Die URL ist ebenfalls die, die du zu streamen benutzt.
Also rtmp://123.123.123.123:1935/publish/live

Auf einem Linux-System nutze die Medienquelle und füge dort ebenfalls die URL ein.

Tipp: Deaktiviere den WebSockets-Server, solange du deine Szenen einrichtest. Ansonsten wechselt ALBS dir die ganze zeit die Szene 😉

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.

Warum eine Linux-VM?
Weil es mit Linux viel einfacher umzusetzen ist, als mit Windows.
Zudem kannst du diese Anleitung 1:1 für Server im Rechenzentrum nachmachen. Linux-Server sind in RZ‘s meist viel günstiger als Windows-Server.
Die VM kannst du auch in einem Zug wieder restlos entfernen, wenn du sie nicht mehr brauchst.
Auch Updates für alle Komponennten lassen sich mit einem Zug installieren.

Kann ich das auch auf Windows umsetzen?
Ja. Installiere dir die Abhängigkeiten, also git, python, nginx mit rtmp & Co. auf 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.

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 😉

18 Kommentare

  1. Hallo und vielen Dank für Deine klasse Anleitung. Ich habe eine kleine Frage… das starten des ALBS.sh würde ich gerne mit cronetab lösen als @reboot damit es immer beim starten meines Servers mit ausgeführt wird. (beim nginx hab ichs hin bekommen). Allerdings bekomme ich das ALBS.sh nicht mit crontab beim rebbot des systems zum laufen. Kannst du mir verraten wie bzw. ob das auch mit crontab zu realisieren ist?

    Viele Grüße
    Venne

    • Soweit du mit dem Cronjob die ALBS.sh aufrufst, sollte das eigentlich funktionieren.
      Der Cronjob sollte in etwa so lauten:
      @reboot HIER-DEIN-NUTZERNAME-EINTRAGEN /pfad/zum/script/ALBS.sh > /dev/null
      oder es geht auch so:
      @reboot HIER-DEIN-NUTZERNAME-EINTRAGEN cd /pfad/zum/script/ && ./ALBS.sh

      Was ich aber empfehle, ein „sleep 20“ am Anfag des Scripts einzufügen.
      So wartet das Script 20 Sekunden, bevor es los legt. Mit Sicherheit sind notwendige Dienste am Anfang noch nicht komplett gestartet und der Startvorgang von ALBS läuft ins leere.

      Ich lass z.B. mit dem Cronjob-Aufbau ein paar andere Scripte ausführen. Das klappt so wunderbar.

  2. Danke für Deine letztmalige Hilfe 😉 Ich komme immer mehr in die Feinjustierung daher benötige ich für meinen IRL-Stream die stat-Anzeige des ankommenden rtmp-Streams im Browser. mit http://meineip/stat bekomme ich nur eine weiße Seite angezeigt. Ich erkenne das der Browser die Seite zwar ständig im Intervall von 2-3 Sekunden aktualisiert aber es werden keine Werte angezeigt. Liegt es evtl. daran das dort nur ausgehende Verbindungen protokolliert werden aber keine eingehenden rtmp-Streams?

  3. server {
    listen 80;
    location /stat {

    rtmp_stat all;

    rtmp_stat_stylesheet stat.xsl;
    }

    location /stat.xsl {
    root /usr/local/ngnix/html;
    }

    Fehler gefunden 😉 Direkt nach meinem Kommentar hier war der Server neu gestartet. Oben aufgeführt ist die richtige Konfiguration…

    Grüße Venne

  4. Nicolas Schwabe

    Hi.

    Gibt es auch die Möglichkeit beispielsweise für Twitch einen Chatbot einzurichten, mit dem man über einen Command die Bitrate anzeigen lassen kann oder auch über einen Command die Szenen in OBS von unterwegs wechseln kann?

    Suche so etwas schon sehr lange. Ich hoffe, es gibt eine Möglichkeit.

  5. Nicolas Schwabe

    Guten Abend,

    ich bekomme eine Fehlermeldung bei Schritt 7, wo es darum geht Nginx zu starten. Wenn ich den Command ausführe kommen bei mir folgende Fehlermeldungen:
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:1935 failed (98: Address already in use)
    nginx: [emerg] still could not bind()

    Hatte schonmal jemand das Problem und hat einen Rat für mich, was ich tun kann oder wo das Problem liegt.

    Ich freue mich über hilfreiche Tipps und hoffe, dass mir jemand helfen kann.

    • Das Problem steht in der Fehlermeldung drin.
      Der Port 80 und 1935 ist bereits belegt.
      Am einfachsten mal den Server neu starten, dann sind eventuell „tote“ Prozesse weg und die Ports wieder frei.
      Sollte der Fehler weiterhin bestehen, am besten noch einmal die Konfiguration auf Fehler überprüfen.

  6. Hallo,
    eine kurze frage nach dem Starten vom Low Rate Switcher mit der:
    # ./ALBS.sh
    kommt bei mir immer Screen is terminating
    an was kann das liegen ?

  7. Weis jetzt nicht wie du das meinst ?
    Wenn ich nach einem erneuten einloggen in meinen pi die Eingabe. ./ALBS.sh eigene kommt erneut nur: Screen is terminating

    • Einfach mal npm start direkt in die Komandozeile eingeben und schauen was da raus kommt.
      Damit startest du es nicht per Screen, sondern direkt in deiner Terminal-Sitzung.

  8. Es kommt immer nur rote error Schriften nach der Eingabe .
    Kann es sein dass es mit der v2 Version anders zum installieren geht auf linux ?
    Haben Sie evtl Discord ??

    • Diese Roten schrift ist der Fehler. Da steht, was falsch läuft.
      Diesen Fehler mal in einer Suchmaschine eintragen, da gibts bestimmt eine Lösung.
      Discord nutze ich nicht.

  9. Mag ja sein, dass ich ein wenig blöde bin aber zum einen gibt es bei meiner nginx.conf keinen Eintrag “ home “ Verzeichnis welches ich ändern oder anpassen kann und das 2. ist : was ist “ LBRS-Verzeichnis“.

  10. Hallo,

    eine Frage, wie kann ich Nginx aktualisieren, wenn ich z.B. Version 1.22.1 installiert habe und ich jetzt zur 1.24.0 updaten möchte?

    Ich habe alles so wie in deiner Anleitung gemacht.

    Danke im Voraus!

    LG AGW

    • Hi!
      Ja du kannst nginx aktualisieren, das sollte kein Problem darstellen.
      Du musst nur darauf achten, dass das RTMP-Modul auch mit der neusten Version harmoniert.
      Sollte es dort ungewollt zu Problemen kommen, musst du ggf. nginx neu installieren.
      Eine Garantie auf Erfolg, kann ich dir keine geben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.