Skip to content

Eigenen RTMP Streaming Server aufsetzen

BSD Gaming Hosting Internet IT Linux Videos Windows

Streamingdienste im Internet gibt es viele, einige davon hat man vllt. sogar schon mal genutzt – sei es als user oder als broadcaster. Diese Dienste sind praktisch, weil man sich nen Account eben im Web klicken kann, sie meist irgendwelche sozialen Features haben und vllt. sogar Aufzeichnungen der Übertragungen erstellen können. Sehr viel mehr Flexibilität ist aber nicht zu erwarten.

Mehr Freiheiten hat man aber definitiv mit seinem eigenen Streaming Server – nicht zuletzt weil es so kaum Beschränkungen gibt, was man übertragen darf (von rechtlich fragwürdigen Inhalten mal abgesehen).

Dieser Streaming Server ist mit nginx, einer freien Webserver Software und einem optionalen Modul recht einfach aufzusetzen, dafür benötigt man logischerweise erstmal einen Server, wobei es zumindest für erste Tests relativ egal ist, wie stark er ist, das kann ein Rootserver, ein kleiner V-Server oder gar ein Raspberry Pi sein.

Hierzu installieren wir (auf einem Debian System) erstmal zum Kompilieren die nötigen Abhängigkeiten: (alle Schritte als user root)

$ aptitude install build-essential libpcre3 libpcre3-dev libssl-dev git-core

Dann den aktuellen Mainline Version des nginx Quellcodes:

$ cd /usr/local/src/
$ wget http://nginx.org/download/nginx-1.5.12.tar.gz

Und den aktuellen Snapshot des rtmp-Moduls:

$ git clone https://github.com/arut/nginx-rtmp-module.git

Nun alles entpacken und in das Verzeichnis wechseln:

$ tar xfvz nginx-1.5.12.tar.gz
$ cd nginx-1.5.12

Wir konfigurieren den Quellcode so, dass das rtmp Modul gleich mit reinkompiliert wird:

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

Jetzt ist der nginx unter /usr/local/nginx/ intalliert und kann konfiguriert werden. Hierzu reicht für erste einfache (lokale) Tests schon eine simple application wie im Beispiel live zu sehen, möchte man etwas mehr „security-by-obscurity“, kann man eine weitere app anlegen, die mit hidden path „geschützt“ Streams annimmt und auf die live app pusht – bei Bedarf sogar mit Rekodierung oder Aufzeichnung:

# keep $PATH
env PATH; #needed to be able to call program names without full path
rtmp {
 server {
  listen [::]:1935 ipv6only=off; # needed to listen to IPv4 *and* IPv6
  chunk_size 4096;
 application hyper-secret-hidden-app-name {
  live on; # one-to-many streaming
  meta copy;
  push rtmp://localhost/live/; # push stream to app "live"
 # push rtmp://live−fra.twitch.tv/app/;
 # exec avconv −i rtmp://localhost/secret_input_1395149336/$name −c copy −f flv rtmp://localhost/live/$name;
  allow publish 192.168.122.0/24;
  allow publish 192.168.126.0/24;
  allow publish 212.124.40.2;
  deny publish all;
  allow play 127.0.0.1;
  deny play all;
 record all;
  record_path /tmp/rec;
  record_unique on;
  record_interval 60s; 
  exec_record_done avconv −i $path −c copy /var/www/cloud.commander1024.de/docs/streamdumps/$basename.mp4;
  }
 application live {
  live on;
  record off;
  allow publish 127.0.0.1;
  deny publish all;
  allow play all;
  }
 }
}

Dieser Stream kann nun mit ffmpeg, avconv, praktischen Skriptsammlungen wie der von wargio oder gängigen grafischen Programmen wie der Open Broadcaster Software (OBS), Xsplit bespielt werden.

Zum Abspielen bietet sich jeder halbwegs gescheite Mediaplayer von vlc über (s)mplayer an, sowie diverse (Flash)-basierte Player zum Einbetten in Webseiten. Als Beispiele seinen das der Flowplayer oder der JW Player genannt. Will man den Stream ohne Flash abspielen oder auch auf iOS Geräten, muss man den Stream wieder mit avconv umverpacken in das .mp4 Containerformat und lässt sich so ebenfalls mit dem rtmp Modul streamen, hier deswegen noch ein Hinweis auf die Doku des Moduls.

6 Kommentare

  1. Avatar for Melina
    Melina

    Hallo Marcus,

    Ich hoffe, dass dieser Thread nicht zu alt ist, aber ich hätte da mal eine Frage. Ich will meine Videos selber streamen. Kann ich einen solchen nginx server auch irgendwie über all inkl einrichten. Hab dort 250 gb, die ich kaum nutze.
    Und bevor ich jetzt 60 Euro für Vimeo ausgebe, würde ich die Videos gern selber hosten…
    Die haben mir gesagt, dass das nicht funktioniert. Aber geht das irgendwie?

  2. Avatar for Marco
    Marco

    Was muss ich machen, damit ich den livestream nicht nur lokal sende, sondern auf meiner Website einbinden kann, und es alle sehen können?

  3. Avatar for Felix
    Felix

    Habe alles so gemacht wie beschrieben, ich kann den server bespielen, aber wenn ich dann versuche es mit vlt abzuspielen, oder einem anderen den link schicke (mit protfreigabe und allem) das geht es trozdem nicht. wie kann ich das beheben !?

  4. Avatar for Uwe
    Uwe

    Hallo Marcus,
    deine Beschreibung ist kurz, schmerzlos und trifft den Nagel auf den Kopf.
    O.K. warum ich schreibe?
    Warum steht deine Seite auf meiner Firfox 37.0.1 canonical 1.0 Blacklist?

    Uwe

    1. Avatar for Marcus Scholz
      Marcus Scholz

      SSL Zertifikat abgelaufen und deshalb schlägt auch der OCSP Test fehl. Ist aber nicht weiter schlimm, verschlüsselt ist es dennoch alles, bin nur zu faul zum Verlängern …

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, wie deine Kommentardaten verarbeitet werden.

Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.