Eigener Live-Streaming-Server setup

Es gibt einige Dokumentation zu diesem Aufbau, die auf YT gezeigt werden. Oft sind die Anleitungen unvollständig oder es fehlen notwendige Informationen. Nach umfangreichen Recherchen und dem Einlesen in das Thema, habe ich dieses Setup zum „Fliegen“ gebracht. Vielen Dank an die Open Source Gemeinschaft, die unendliche viel Vorarbeit dazu geleistet hat.

Stand: 07.09.2020 // nginx Version von 1.15.1. nach 1.18.0 geändert

Voraussetzung für die Installation auf Ubuntu vorher installierte Programme:
a) VLC-Media-Player
b) OBS Open Broadcast Software
c) Zip-Entpacker
d) hier genutztes Linux-Betriebssystem Ubuntu 18.03.

Diese Anleitung ist Schritt für Schritt auszuführen. Für die Installation sind folgende Voraussetzungen erforderlich.
– Grundkenntnisse von dem Betriebssystem Ubuntu
– Umgang mit einem einfachen Text-Editor (HTML)

Tipp: Die hier angegebenen Befehlszeilen können einfach mit [Strg]+[x] kopiert werden und mit
[Strg]+[Shift] +[v ] in das Konsolen-Fenster eingefügt werden.

Vor der Installation, solltest du dein System auf den aktuellen Stand bringen.

Mit der Tastenkombination [Strg] + [Alt] + [T] öffnest du die Konsole und gibst dazu folgende Befehlszeile ein. Gib dein Passwort ein und drücken [Enter]. Drücke [J] um das Update durchzuführen.

$ sudo apt-get update && sudo apt-get dist-upgrade
  1. Die folgenden notwendigen Tools sind als nächstes so zu installieren:
$ sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

2. Den Webserver enginx (gesprochen „engine-X“) herunterladen. Er ist derzeit einer der leistungsfähigen Webserver.

$ wget http://nginx.org/download/nginx-1.18.0.tar.gz

3. Quellen für das RTMP-Modul herunterladen

$ wget https://github.com/sergey-dryabzhinsky/nginx-rtmp-module/archive/dev.zip

4. Entpacken und in das Server-Verzeichnis wechseln

$ tar -zxvf nginx-1.18.0.tar.gz
$ unzip dev.zip
$ cd /nginx-1.18.0

5. Erstellen und Installieren des nginx-Server mit dem eingebundenem RTMP-Modul.

$ ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-dev
$ make
$ sudo make install

6. Notwendige Verzeichnisstruktur anlegen für die Fragmente des Video-Streams.

$ sudo mkdir /HLS
$ sudo mkdir /HLS/live
$ sudo mkdir /HLS/mobile
$ sudo mkdir /video_recordings
$ sudo chmod -R 777 /video_recordings

Wird ubuntu mit Firewall betrieben (Standard ist aus), dann muss folgende Regel eingefügt werden.

$ sudo ufw allow 80 
$ sudo ufw allow 1935 sudo 
$ ufw enable

6. Der Server ist installiert im Standardverzeichnis: /usr/local/nginx und wird nun gestartet. Den Browser öffnen und http://<deine ip-adresse>/  oder „localhost“ eingeben. Es erscheint die Startseite des Servers. (Die IP-Adresse des Servers wird über das Komando $ ifconfig ausgegeben.)

Server starten mit:

$ sudo /usr/local/nginx/sbin/nginx

Server stoppen mit:

$ sudo /usr/local/nginx/sbin/nginx -s stop

6. Installieren von FFmpeg zum Konvertieren und Packen des Streams.

$sudo apt-get install software-properties-common 
$sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next

6. Paketliste aktualisieren und installieren

$sudo apt-get update
$sudo apt-get install ffmpeg

7. Der Server konfigurieren vorher die original Konfigurationsdatei „nginx.conf „sichern.

$ sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
$ sudo nano /usr/local/nginx/conf/nginx.conf

8. Den gesamten Inhalt in die vorhandene Datei „nginx.conf“ kopieren (überschreiben) und speichern. Die Platzhalter „meine-ip sind mit der IP-Adresse deines Server zu ersetzten. Beispiel: 192.168.254.178
Für „mein-streaming-key“, dein frei erfundener key z.B. 123 überall einsetzen.

worker_processes  1;
error_log  logs/error.log debug;
events {
worker_connections  1024;
}
rtmp {
server {
listen 1935;
allow play all;

#creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments
application live {
allow play all;
live on;
record all;
record_path /video_recordings;
record_unique on;
hls on;
hls_nested on;
hls_path /HLS/live;
hls_fragment 10s;

#creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video
exec ffmpeg -i rtmp://meine-ip:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://meine-ip:1935/mobile/$;
}

#creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments
application mobile {
allow play all;
live on;
hls on;
hls_nested on;
hls_path /HLS/mobile;
hls_fragment 10s;
}

#allows you to play your recordings of your live streams using a URL like "rtmp://meine-ip:1935/vod/filename.flv"
application vod {
play /video_recordings;
}
}
}


http {
include       mime.types;
default_type  application/octet-stream;

server {
listen 80;
server_name meine-ip;

#creates the http-location for our full-resolution (desktop) HLS stream - "http://meine-ip/live/mein-stream-key/index.m3u8"      
location /live {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/live;
add_header Cache-Control no-cache;
}

#creates the http-location for our mobile-device HLS stream - "http://meine-ip/mobile/mein-stream-key/index.m3u8"        
location /mobile {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/mobile;
add_header Cache-Control no-cache;
}   

#allows us to see how stats on viewers on our Nginx site using a URL like: "http://meine-ip/stats"     
location /stats {
stub_status;
}

#allows us to host some webpages which can show our videos: "http://meine-ip/my-page.html"     
location / {
root   html;
index  index.html index.htm;
}   
}
}

8. Das Program OBS (Open Broadcast Studio) starten und die Standard-Einstellungen belassen, bis auf den Eintrag „URL“ und „Stream-Schlüssel“

Encoder-x264
Variable bitrate (not CBR or Constant Bit Rate), Quality highest
Max bitrate-600kbps
Audio-Codec-AAC
Audio-Format-44.1khz
Audio-bitrate-64kbps
URL "rtmp://deine-ip:1935/live"
Stream Key-"mein-stream-key"
Resolution-640x480
FPS (frames per second)-30
CFR (Constant Frame Rate) - Yes
Keyframe interval-2 seconds (one keyframe every 2 seconds)
x264 Encoding Profile-baseline (may work with main—depends on player used)
x264 CPU Present-veryfast

a) In OBS eine Videoquelle auswählen, z.B. Webcam
b) die Schaltfläche „Streaming starten“ betätigen

Ergebnis: Die Beschriftung der Schaltfläche wechselt in „Streaming stoppen“ und es wird in der unteren Statuszeile die Übertragsrate angezeigt.

9. Nun folgt ein Test mit dem VLC-Media-Player. Den Menüpunkt des VLC, „Medien/Netzwerkstream öffnen“ und die folgende Adresse eingeben:

http://meine-ip/live/mein-stream-key/index.m3u8

Wenn alles geklappt hat, zeigt der VLC-Player deinen Stream. Gratulation!

10. Stream in einer Website mit dem Media-Player „Video.js“ einbinden.

a) Den video.js-Player herunter laden und im Verzeichnis /usr/local/nginx/html entpacken.

b) Folgende HTML-Seite mit dem Namen z.B. „meine-index.html“ in dem o.g. Verzeichnis erstellen.

 <!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Willkommen zu meiner Streaming-Seite!</title>
<link href="/video-js.css" rel="stylesheet">
<script src="/video.js"></script>
<script src="/videojs-contrib-hls.js"></script>
<script> var player = videojs('example-video');
player.play();
</script>
</head>

<body>

<video poster="/logo.png" id="example-video" class="video-js vjs-default-skin" controls preload="auto" width="640" height="268" data-setup='{}'>

<source src="http://meine-ip/live/mein-streamkey/test.m3u8" type="application/x-mpegURL">
        <p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that
        <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
        </video>

</body>
</html>

12. Die erstellte Website im Browser aufrufen:

http://meine-ip/meine-index.html

Die Website erscheint mit dem eingefügtem Live-Player.

Glückwunsch! Du hast konzentriert und exakt gearbeitet und besitzt nun einen eigenen Live-Streaming-Server 🙂

Hilfereiche Seiten für das beschriebene Setup
https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/

https://www.vultr.com/docs/setup-nginx-on-ubuntu-to-stream-live-hls-video

https://www.vultr.com/docs/setup-nginx-rtmp-on-ubuntu-14-04

https://selimatmaca.com/index.php/live-streaming

42 Gedanken zu „Eigener Live-Streaming-Server setup“

  1. Hallo, ich habe damit erfolgreich einen Stream aufgesetzt, funktioniert sehr gut. Die Video Qualität ist sehr gut und es ist auch flüssig.

  2. Hallo, also auch für mich als Linux Neuling war die Setup Beschreibung sehr hilfreich. Stream läuft sauber auf alles Geräten (auch Smartphone). Danke für die coole Beschreibung. Jetzt wäre es nur gut zu wissen wie ich den von „ausserhalb“ meines Heimnetzwerkes abrufen kann. Bisher hab ich das noch nicht hinbekommen. Ich nutze einen V-DSL DS-lite Anschluss und bin daher auf Drittanbieter Betreffs IPv6 Routig angewiesen. Die Fritzbox – Myfritz – Portfreigabe hat bisher auch keinen Erfolg gebracht.

    1. Gerhard Peilstöcker

      Hi Falk,
      Gratulation! Danke für dein Feedback und als Linux-Neuling – Hut ab! Da hast du ein ganzes Stück konzentrierte Arbeit geleistet.
      Gerne helfe ich dir weiter bei dem Zugriff von außen. Ich habe zwei Drittanbieter getestet und bin von dem kostenlosen und äußerst stabilen Service von Selfhost.de überrascht. Der Dyn-DNS Service ist schnell eingerichtet. Du musst dazu noch auf deinem Router die betreffenden Ports freigeben, jeweils TSP und UDP und unter den Einstellungen „Dynamisches DNS“, die Zugangsdaten von Selfhost.de eintragen. Wenn alles klappt kann die ganze Welt deinen Videostream auf von deinem eigenen Server stehen. Viel Erfolg!

      1. Hey Gerhard, Danke für Deine schnelle Antwort. Mein Problem ist aber das mir mit einem Dyn DNS Anbieter vermutlich nicht geholfen ist. Ich hatte es bei einigen probiert bis ich herausgefunden habe das mein Internetzugang über ein DS-lite Tunnel erfolgt. Das kann ich umgehen indem ich die DynDNS von der MyFritz! Freigabe benutze. Jetzt wäre interessant zu wissen welche Ports ich dafür freigeben muss. UDP also auch…. ich glaube wir kommen der Sache langsam näher 🙂

        1. Gerhard Peilstöcker

          Genau, in der Fritzbox gibst du die DynDNS Zugangsdaten von deinem Anbieter an und gibst die Ports 80 und 443 frei. Damit bohrst du dann zwei Löcher in deine Firewall 🙂 Hintergrund: Du bekommst von deinem DynDNS-Anbieter eine feste URL bereitgestellt z.B. mylive-cam.selfhost.co und einen Benutzername und Kennwort, damit ist dein Live-Streaming-Server immer über das Internet erreichbar auch wenn dein Internetserviceprovider (ISP) alle 2 Tage deine öffentliche IP-Adresse aus Sicherheitsgründen ändert. Ich habe das Setup auch schon mit einer Raspberry-Cam gebaut und die überwacht unser Grundstück.Raspberry PI2 mit motioneyeos

  3. Hallo Gerhard.
    Erst mal Danke für Deine Mühen!
    Ich habe Deine Anleitung befolgt (altes nginx vorher deinstalliert). Bei mir (Ubuntu Server 18.04.4) musste ich allerdings noch libnginx-mod-rtmp nach installieren. Es klappt soweit bis zum Test mit dem vlc. Dann komme ich zum Video.js und bekomme die Meldung „The media could not be loaded, either because the server or network failed or because the format is not supported“. Das Fenster bleibt dunkel.

    Das JS-Modul videojs-contrib-hls.js hatte ich nicht gefunden und hab es von hier geholt: https://github.com/videojs/videojs-contrib-hls/releases/download/v5.15.0/videojs-contrib-hls.js aber keine Änderung.

    Im error.log finden sich mehrere dieser Zeilen:
    2020/05/23 09:12:40 [debug] 27879#0: *1 hls: update fragment
    und in access.log in der Art:
    192.168.178.79 [23/May/2020:09:15:27 +0000] PLAY „live“ „123“ „“ – 413 89167 „“ „LNX 9,0,124,2“ (1s)

    1. Hallo Harry, schau doch bitte mal welches JS-Modul ich damals verwendet hatte. Es klingt für mich so, als sei es eine nicht kompatible Version. Mit den Systemmeldungen solltest du eigentlich weiter die erforderliche Konfiguration aufbauen können. Bekanntlich hat ja jede Linux-Distribution eine unterschiedliche Funktionsumfang, so ist es auch üblich und oft erforderliche Module/Libraries noch zu installieren. Die Systemmeldungen von Linux sind dabei oft sehr hilfreich und weisen auf fehlende Komponenten hin. Wünsche dir weiterhin viel Erfolg.

    2. Korrektur: libnginx-mod-rtmp brauchte ich nicht installieren. Jedoch muss ich beim ./configure zusätzlich –with-http_stub_status_module angeben.

      Im Debugger (FF und Chrome) bekomme ich die JS-Meldung:
      TypeError: The element or ID supplied is not valid. (videojs)

      Aber ich habe den Verdacht, dass es am Mimetyp liegt? Es kam auch in der Console die Meldung, dass application/x-mpegURL nicht unterstützt. Diese steht auch nicht in der Konfiguration von nginx. Andere Typen, zb video/mp4 gehen auch nicht.

  4. Erst hatte ich 7.6.5 und bin dann auf die neueste 7.8.1 gegangen aber es hat sich nicht geändert. videojs-contrib-hls ist die Version 5.15.0

    Ich versuch dann mal weiter.
    Danke!

  5. habe einen aktuellen Server (ubuntu20.04/nginx1.19+rtmp modul)aufgesetzt und mit dieser Anleitung ans laufen bekommen. Danke dafür.
    Nur der mobile stream wollte nicht. Lösung war ein tipp?-Fehler im exec ffmpeg Befehl.
    Ich habe maxrate durch -maxrate ausgetauscht und /$ am ende durch /$name. Dann lief es.

    1. Gerhard Peilstöcker

      Hallo Julian,
      super, danke für dein Feedback, wir leben davon 🙂 Ich schaue mir gleich mal die Anleitung diesbezüglich an, möglicherweise ist es ein Tipp-Fehler. Auf jeden Fall, ist dein Hinweis bereits jetzt hilfreich für die Community. Thx

    1. Gerhard Peilstöcker

      Hi Florian,
      danke für deine Anfrage. Einen Webserver auf dem PI zu installieren ist eine super Idee und funktioniert hervorragend. Das ist für viele Anwendung ideal, da der PI lautlos arbeitet und kaum Strom verbraucht. Für einen Streaming Server ist der kleine Pi aber restlos überfordert. Seine Stärken liegen in anderen Bereichen.

  6. Hallo Gerhard,

    bin recht neu was nginx und rptm angeht! ist es möglich videos die im mp4 format auf dem server liegen mittels nginx (rtpm, hls, ffmpg) zu twitch streamen! Möcht dort ein 24 std stream einrichten bei dem die mp4 videos die auf dem server liegen nach einander abgespielt werden. Da es ein vps server ist kann kein obs genutzt werden.
    Schon mal danke für deine hilfe!

    1. Gerhard Peilstöcker

      Hi Jerome,

      vielen Dank für deine Frage. Was hält dich davon ab, auf einem VPS Server OBS zu installieren? Dazu gibt es Tutorials im Netz, also kein Problem. Selbstverständlich würde ich ein VPS mit Ubuntu Linux empfehlen. Um eine noch größere Reichweite deines „Senders“ zu erreichen, könntest du auch gleichzeitig und 24/7 auf weitere Streaming Server (Facebook, Youtube, Periscope, Vimeo, etc.) deine Viedeos ausstrahlen. Wünsche dir viel Erfolg bei deinem Projekt.

  7. Ja auf die alternative mit obs wollte ich zuerst zugreifen, aber dazu ist opengl 3.2 fähige hardware nötig, der server stellt da durch das es nur ein vps ist, nur opengl 3.0 zurverfügung. Aus diesem grund wollte ich auf nginx und die dazu gehörigen Module zurück greifen.

    1. Hi, @Jerome
      bist du mit deinem Vorhaben erfolgreich gewesen, ich such(t)e nach einer Möglichkeit 24/7 zu streamen. Bei meinem VPS Provider habe ich keine GUI, leider nur komandozeile (glaube ich, bin auch kein Pro in Sachen Linux) und möchte auch auf verschiedenen Plattformen gleichzeitig streamen.

      Komme so alleine nicht weiter!

  8. Danke für die Anleitung !
    eigentlich läuft alles wie beschrieben, bitte eine Frage, wie bekomme ich den Stream auf eine bestehende Website eingebunden? Ich habe mehrere Versuche unternommen, es kommt die Meldung hls Video File not found….
    Mit VLC Player funktioniert alles.
    Danke

    1. Hallo Heiko,

      danke für dein Feedback. Du hast den Aufbau also fast geschafft, prima! Um deine Frage beantworten zu können, bräuchte ich mehr Indizien. Wie ist dein konkretes Setup (Netzwerkkonfiguration, Router, CMS, Firewall, etc.)? Wie/wer hostet die Website ggf. auf welchem Webserver? Mit welchem Code hast du den Live-Stream auf der Website eingebunden? Sind ggf. die notwendigen Ports der Firewall geöffnet? Wie sind die Einstellungen für das dynamisches DNS? Ist dein Live-Server-Server über das Internet zu erreichen? Wie ist die URL?

      Sorry Heiko für die vielen Fragen, aber ohne gehts nicht. 🙂 Vielleicht helfen dir meine Fragen bereits, um selbst die richtige Konfiguration zu finden.

      Viele Grüße
      Gerhard

      1. Danke für deine Antwort !
        Ich habe inzwischen Fortschritte gemacht, soll heißen das ich den Stream auf meiner Website einbinden konnte und dieser auch läuft, leider sehr „ruckelig“. Ich denke damit sind erstmal viele Fragen geklärt wie Firewall, Ports etc., denn wenn das nicht „frei“ bzw. offen ist oder falsch konfiguriert, dann würde es ja nicht „ruckelig“ funktionieren.
        Das ganze ist momentan ein reines „Test/Experiment“ Projekt. Ich nutze den Provider für meine Homepage zum testen „Serverprofis“. Der StreamServer steht an einer anderen Stelle, mit 100000 DSL Anbindung. Es wird „lokal“ per OBS an den StreamServer gesendet und in/auf meiner Homepage habe ich FlowPlayer als Test eingebunden. Es geht aber nicht flüssig….
        Falls du Lust und Zeit hast für Tests etc. könnte ich die alle Daten zukommen lassen, aber nicht hier in der Öffentlichkeit. Oder du schreibst mir an shp@freenet.de
        Ich würde mich über Hilfe und Ratschläge sehr freuen, Streaming ist neuland für mich, aber ich bin ja lernfähig
        Danke Heiko

    1. Gerhard Peilstöcker

      Für meine hier beschriebene Lösung war es nicht erforderlich. Eine Umsetzungen weiterer Sicherheitsanforderungen hängen direkt von den Anwendungsfällen ab und selbstverständlich von allen Details der Systemarchitektur.

  9. Danke für die Anleitung, super !
    Da ich einen kleinen Milestone Server am anderen Ende besitze, für die Viewer, wäre es hübsch, den Stream irgendwie zu transcodieren um ab zugreifen? (Onvif oder universal Treiber?)
    Ich kenne das rtmp-modul noch nicht sehr gut… könnte da etwas möglich sein?
    Danke & Grüsse Martin

    1. Gerhard Peilstöcker

      Danke dir TINO für deine Frage und Anregung. Ich habe mich damit nicht intensiver beschäftigt, gerne stelle ich aber diese Frage den Leser*innen dieses Beitrags. Möglicherweise hat jemand ein link für dich?

  10. Hallo Gerhard,
    ich würde gern wissen, wie gute Erfahrung du mit HEVC und NGINX gemacht hast. Ist es überhaupt möglich, einen eingehenden H256 zu transcodieren und in anderen Formen als H256 wieder ausugeben?

  11. Hallo Gerhard,
    ich hatte schon mit nginx rumgespielt.
    Ich bin ein wenig irritiert, wird bei der .conf auch der Stream gespeichert?
    record all + record_unique on deutet für mich darauf hin..

    Wenn ich es recht erkenne wird der ankommende rtmp-Stream umgewandelt und dann ausgesendet.
    Wie ist da die Latenz?

    Gruß Thomas

      1. Danke Thomas für die Frage. Bei dem hier beschriebenen Setup empfehle ich dir die aktuelle Version des nginx zu verwenden. Höhere Versionen sind Fehlerbereinigt und Weiterentwicklungen. Ganz einfach alle Angaben zur Version die ich in der Anleitung verwendet habe, durch die aktuelle Version des nginx Webserver ersetzen. Der Live-Stream-Server läuft selbstverständlich auch mit der aktuellen Version. Könnte ich eigentlich auch mal anpassen, sodass die Anleitung aktuell bleibt. Wünsche dir viel Spaß und Erfolg beim Aufbau!

    1. Hi Thomas,
      im Grunde genommen ist der Stream ja nur eine Anzahl von vielen einzelnen Bilder die wie bei einem Daumenkino hintereinander in einer hohen Geschwindigkeit hintereinander gezeigt werden. Die Bilder lernen das Laufen :-). Jedes einzelne Bild wird zwischengespeichert und konvertiert. Für einige Anwendungsfälle macht es Sinn, den Stream zu speichern, z.B. um ihn später als Konserve den Kunden anzubieten. z.B. den Live-Mitschnitt später in einer eigenen Mediathek anzubieten. In der .conf lassen sich diese Einstellungen konfigurieren. Thomas, wie du schreibst, wird der rtmp-Stream umgewandelt und dann „gesendet“. Mit dem derzeit schnellsten Webserver der nginx, schaffst du die beste Performance. Selbstverständlich sind alle weiteren Komponenten relevant für die User Experience. Bei meinem Live-Stream-Server konnte ich keine nennenswerte Latenzen feststellen. Klar, das der Live-Stream in Relation zur Real-Time bei den Consumer zeitversetzt ankommt, dieser Zeitversatz bleibt aber stabil. Dieses Verhalten haben wir aber auch bei jeder Live-Übertrag beim TV oder auch Radio.
      Auf was zielt deine Frage konkret ab? Latenzen sind aus meiner Sicht nur kritisch in einer bidirektionalen Übertragung und wirkt sich dann nachteilig auf die User Experience aus. Der hier beschriebene Live-Stream-Server ist ja als Sender zu sehen.

      1. Hallo Gerhard,
        danke für die ausführlichen Antworten.
        Ich bin Amateurfunker und bin Sysop eines Amateurfunk-Fernsehrelais. Alles ambitioniertes Hobby
        Wir streamen die Funkaussendung auf unsere Internetseite um auch den Interessierten ausserhalb der Funkreichweite die Möglichkeit zu geben, bei uns reinzuschauen.
        Da kommt es auch schon mal bidirektionalen Austausch, wo lange Latenzen (>5 Sekunden) stören.
        Daher meine Frage.

        Wenn ich es richtig sehe, ist der ausgesendete Stream kein RTMP mehr und somit nicht vom EOL im November betroffen?

        Ich werde dann mal ein wenig experimentieren.

        Wir haben unsere Seiten mit WordPress gemacht und dann muss eine Seite entsprechend eingerichtet werden.

        Vielen Dank für Deinen Beitrag und die Mühe.

        Gruß Thomas

  12. Hi,

    ich benötige ein RTMP signal rein und ein HTTPS:…/xy.m3u8 Signal/File damit ich im Browser bei Nutzern meiner APP keine Fehlermeldung bekommen, dass die Verbindung unsicher ist.

    Wie mache ich das?

    1. Vielen Dank für deine Frage! Wie ist dein konkreter Systemaufbau? Es ist keine große Herausforderung eine sichere Verbindung zum Live-Stream-Server aufzubauen. Da gibt es viele einfache und kostenfreie Lösungen. Ich würde einfach mein eigenes VPN aufbauen und selbst ein Zertifikat erstellen. Dann hast du eine https-Verbindung und der Stream von deinem Live-Streaming-Server ist sicher. Der Browser wirft keine Hinweismeldung mehr, der Nutzer bekommt keine Angst mehr 🙂 So entstehen keine zusätzliche Koste, wie wenn du einen Vertrag bei einem VPN-Service-Provider abschließt. Ein weiterer Vorteil ist, deine Nutzer*innen können deinen Live-Stream weltweit empfangen, da das Problem mit Geoblocking damit auch ausgehebelt wird. Oh.. durfte ich das überhaupt verraten? :-)) Have a lot of fun..

  13. Erstmal vielen Dank für diese Anleitung.

    Brauchte für den ./configure Befehl aber noch das Paket libghc-zlib-dev, da dieser mit folgender Fehlermeldung gemeckert hatte:

    „./configure: error: the HTTP gzip module requires the zlib library.
    You can either disable the module by using –without-http_gzip_module
    option, or install the zlib library into the system, or build the zlib library
    statically from the source with nginx by using –with-zlib= option.“

    Ich bin noch im ganzen Installationsvorgang und frage mich gerade wo die ganzen Verzeichnisse hin sollen, die da angelegt werden sollen. Tatasächlich in „/“?

  14. Nochmal ein Nachtrag: Habe jetzt alles zum laufen bekommen, mit ein paar Anpassungen. Ein paar Fehlermeldungen gab es auch beim Repositry. Es funktionierte zwar am Ende, aber der Fehler bleibt.

    Ich nutze Unbuntu 20.04.1 LTS (focal)

    1. Brauchte ein zusätzliches Paket (libghc-zlib-dev), also
    $sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev libghc-zlib-dev

    2. Musste in der /auto/options (im entpacketen nginx-Verzeichnis) die Option „HTTP_STUB_STATUS=NO“ auf „HTTP_STUB_STATUS=YES“ umstellen.

    3. $sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next gibt folgendes aus:
    “ This PPA provides backported release ffmpeg for current releases Ubuntu (Trusty, Utopic, etc.)
    Mehr Informationen: https://launchpad.net/~kirillshkrogalev/+archive/ubuntu/ffmpeg-next
    [ENTER] drücken zum Weitermachen oder Strg-c, um das Hinzufügen abzubrechen.

    Ign:1 http://ppa.launchpad.net/kirillshkrogalev/ffmpeg-next/ubuntu focal InRelease
    Holen:2 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
    Fehl:3 http://ppa.launchpad.net/kirillshkrogalev/ffmpeg-next/ubuntu focal Release
    404 Not Found [IP: 91.189.95.83 80]
    OK:4 http://de.archive.ubuntu.com/ubuntu focal InRelease
    OK:5 http://de.archive.ubuntu.com/ubuntu focal-updates InRelease
    OK:6 http://de.archive.ubuntu.com/ubuntu focal-backports InRelease
    Paketlisten werden gelesen… Fertig
    E: Das Depot »http://ppa.launchpad.net/kirillshkrogalev/ffmpeg-next/ubuntu focal Release« enthält keine Release-Datei.
    N: Eine Aktualisierung von solch einem Depot kann nicht auf eine sichere Art durchgeführt werden, daher ist es standardmäßig deaktiviert.
    N: Weitere Details zur Erzeugung von Paketdepots sowie zu deren Benutzerkonfiguration finden Sie in der Handbuchseite apt-secure(8).“

    4. Es wäre schön, wenn ich den ganzen Kram mit „systemctl enable nginx“ laufen lassen könnte, damit auch bin einem Neustart alles wieder mit hoch kommt. Da fehlt mir die Erfahrung wie ich das so anpasse das es läuft.

    Ansonsten funktioniert alles super. Nachmals vielen Dank für die Anleitung!

  15. Hallo,
    leider scheitert bei mir die serverseitige Installation (auf nem Strato-VServer mit Ubuntu 20.04) am make. Ich bekomme die Fehlermeldung „No rule to make target ‚build‘, needed by ‚default‘. Stop.“
    Gibt es dazu ne Idee?
    Liebe Grüße
    Steffen

  16. Erst einmal vielen Dank für diese Anleitung und für die Arbeit und deine Zeit, die da drin steckt.
    Bis auf eine Sache hat auch alles super funktioniert.
    Leider konnte ich ffmpeg nicht vom PPA Repository installierten, da es scheinbar für Ubuntu 18.04 kein entsprechendes Package gibt. Ich habe daher ffmpeg aus den standard quellen installiert. Das funktioniert auch.
    Als alles lief hab ich das gleiche, ohne Probleme, nochmal mit einem ubuntu 20.04 als Basis getestet.

    Falls es jemand nützlich findet, habe ich daraus ein Docker image gebastelt:

    FROM ubuntu:20.04
    RUN apt-get update && \
    apt-get dist-upgrade && \
    export DEBIAN_FRONTEND=noninteractive && \
    apt-get install build-essential libpcre3 libpcre3-dev libssl-dev wget unzip software-properties-common ffmpeg tzdata -y && \
    ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime && \
    dpkg-reconfigure –frontend noninteractive tzdata && \
    wget http://nginx.org/download/nginx-1.18.0.tar.gz && \
    wget https://github.com/sergey-dryabzhinsky/nginx-rtmp-module/archive/dev.zip && \
    tar -zxvf nginx-1.18.0.tar.gz && \
    unzip dev.zip && \
    cd /nginx-1.18.0 && \
    ./configure –without-http_gzip_module –with-http_stub_status_module –with-http_ssl_module –add-module=../nginx-rtmp-module-dev && \
    make && \
    make install && \
    mkdir /HLS && \
    mkdir /HLS/live && \
    mkdir /HLS/mobile && \
    mkdir /video_recordings && \
    chmod -R 777 /video_recordings
    COPY nginx.conf /usr/local/nginx/conf/nginx.conf
    EXPOSE 80
    EXPOSE 1935
    CMD /usr/local/nginx/sbin/nginx -g ‚daemon off;‘

  17. Hallo, ich möchte „von außen“ (also per DynDNS) auf meinen Livestream über meine Fritzbox zugreifen. Für meine Nextcloud auf einem Raspi war das schnell eingerichtet und läuft, aber ich kriege die Freigabe für OBS einfach nicht hin (im LAN läuft der Livestream einwandfrei).

    (1) Welches Protokoll (TCP/UDP/ESP/GRE) muss ich in der Fritzbox-Freigabe auswählen, und welchen Port intern (1935?)? (Beispiel: „:1234 —> Freigabe Fritzbox leitet weiter —> 10.10.10.20:1935“)

    (2) Wie sieht dann der Link für einen externen VLC aus: „rtmp://:/live/“?

    1. Oha, alles in eckigen Klammern wird leider automatisch gelöscht. 🙁
      Neuer Versuch mit runden Klammern:

      (1) Welches Protokoll (TCP/UDP/ESP/GRE) muss ich in der Fritzbox-Freigabe auswählen, und welchen Port intern (1935?)? (Beispiel: „(MeinDynDns):1234 —> Freigabe Fritzbox leitet weiter —> 10.10.10.20:1935“)

      (2) Wie sieht dann der Link für einen externen VLC aus: „rtmp://(MeinDynDns):(MeinFritzboxFreigabePort)/live/“?

Schreibe einen Kommentar

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