BSD Gaming Hosting Internet IT Linux Videos Windows

Eigenen RTMP Streaming Server aufsetzen

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.

Autor

Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein/e Beruf/ung, die weit über den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fuß und bietet mittlerweile professionelle Lösungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich beschäftigt er sich neben Computerspielen mit der Fotografie.

6 Kommentare Neuen Kommentar hinzufügen

  1. Melina sagt:

    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. Marco sagt:

    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. Felix sagt:

    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. Uwe sagt:

    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

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.