Mit einem eigenen Streaming-Server hat man die komplette Kontrolle über die Über­tra­gung der eigenen Inhalte. Dies ist über einen Webserver dank des Pro­to­kolls HTTP Live Streaming (HLS) ganz einfach zu lösen.

Wie funk­tio­niert HTTP Streaming?

Ur­sprüng­lich wurde das Verfahren von Apple für seine eigenen Geräte ent­wi­ckelt, in­zwi­schen ist HTTP Live Streaming (HLS) aber eines der be­kann­tes­ten Pro­to­kol­le, um im Internet au­dio­vi­su­el­le Medien zu streamen. Da die Über­tra­gung über HTTP läuft (einen der Grund­pfei­ler des Internets), kann jedes in­ter­net­fä­hi­ge Gerät mit HLS umgehen.

Bei HLS werden aus dem Strom an Daten während des Streams kleine Pakete erzeugt. Diese können dann vom Endgerät schnell her­un­ter­ge­la­den und an­ein­an­der­ge­fügt werden. Das sorgt für eine schnelle Über­tra­gung – im besten Fall merken die Zuschauer des Streams nichts von der Auf­tei­lung. Um die richtige Zu­sam­men­set­zung des Videos zu ge­währ­leis­ten, ist Teil von HLS auch eine In­dex­da­tei. Diese weist dem Endgerät die richtige Rei­hen­fol­ge der Da­ten­pa­ke­te.

Das Auf­split­ten des Videos hat zudem einen weiteren Vorteil: Die Vi­deo­qua­li­tät kann während des Streams angepasst werden, ohne dass der Stream komplett neu geladen werden müsste. Das nächste Paket wird einfach in höherer oder ge­rin­ge­rer Qualität geladen.

Den Stream können Sie dann – und das ist ein großer Vorteil von HLS – in Ihre eigene Website in­te­grie­ren. Per HTML5 lässt sich ganz leicht ein ent­spre­chen­der Player einbauen, der den Stream anzeigt.

Hinweis

Neben HLS gibt es das Real Time Messaging Protocol (RTMP). Zwar hat dieses durch den Wegfall von Adobe Flash in den letzten Jahren an Bedeutung verloren, es ist aber weiterhin in­ter­es­sant für eigene Streaming-Lösungen, denn auch für Ihren HLS-Server benötigen Sie das Protokoll. Wenn Sie Ihren Stream nicht auf einer Website prä­sen­tie­ren möchten, könnte es viel­leicht sogar in­ter­es­sant sein, nur einen RTMP-Server zu erstellen.

Wofür braucht man einen eigenen Streaming-Server?

Streaming wird immer populärer – und das nicht nur dank Film- und Serien-Portalen wie Netflix oder Amazon. Auch Pri­vat­per­so­nen und kleinere Un­ter­neh­men wissen um das Potenzial, das Live-Streaming bietet. Für Un­ter­neh­men sind die Über­tra­gun­gen bei­spiels­wei­se für Pro­dukt­vor­stel­lun­gen in­ter­es­sant. Auch Webinare oder Workshops lassen sich per Streaming durch­füh­ren.

Tipp

Bevor Sie einen eigenen Streaming-Server aufsetzen, möchten Sie sich auf Twitch aus­pro­bie­ren? Folgende Artikel im Digital Guide helfen Ihnen beim Start:

Hardware-Spe­zi­fi­ka­tio­nen für HLS Streaming

Um eine passende Server-Lösung auf­zu­set­zen, müssen Sie zunächst wissen, welche An­for­de­run­gen an die Hardware HLS Streaming setzt.

Pro­zes­sor­leis­tung (CPU)

Vor allem wenn der Streaming-Server nur für das Verteilen des Da­ten­stroms gebraucht wird, benötigen Sie keine große Re­chen­leis­tung. 2 Cores mit jeweils bei­spiels­wei­se 2 GHz dürften für kleine Projekte schon aus­rei­chend sein. Um auch auf steigende An­for­de­run­gen vor­be­rei­tet zu sein, sind 4 CPU-Kerne emp­feh­lens­wert.

Ar­beits­spei­cher (RAM)

Der Ar­beits­spei­cher wird beim Streaming vor allem für das Caching verwendet. Für kleine Vorhaben sind 2 GB RAM bereits aus­rei­chend. Möchten Sie größere Projekte umsetzen, sollten Sie auf 4 GB aufrüsten.

Fest­plat­ten­spei­cher (HDD/SDD)

Für die Server-Dateien benötigen Sie kaum Spei­cher­platz. Ein Webserver ist prin­zi­pi­ell schlank. 10 GB können schon aus­rei­chend sein. Zu empfehlen sind dabei aber die schnellen SSD-Speicher, damit an der Stelle kein Fla­schen­hals entstehen kann. Spei­cher­be­darf entsteht deshalb vor allem durch die Vi­deo­da­tei­en, die Sie auf dem Server speichern möchten. Wenn Sie also Ihren Stream auf der Server-Fest­plat­te mit­schnei­den, benötigen Sie weitaus mehr Spei­cher­platz.

Band­brei­te

Von größter Wich­tig­keit beim Streaming ist eine schnelle Ver­bin­dung. Damit Zu­schaue­rin­nen und Zuschauer keine schlechte Bild­qua­li­tät oder lange La­de­zei­ten ertragen müssen, sollte die Band­brei­te auf jeden Fall immer aus­rei­chen. Die Größe des Da­ten­stroms, den die Server-In­fra­struk­tur über­tra­gen muss, hängt von der Qualität des Videos und der Menge an Zu­schau­ern ab. Die heimische In­ter­net­ver­bin­dung dürfte dafür nicht aus­rei­chen, weshalb man einen Streaming-Server auf jeden Fall in einem pro­fes­sio­nel­len Re­chen­zen­trum laufen lassen sollte.

Tipp

Wenn Sie Ihren Streaming-Server bei IONOS erstellen, müssen Sie sich keine Sorgen mehr über Ihre Band­brei­te machen. Ihnen stehen min­des­tens 400 Mbit/s zu Verfügung. Bei einem Dedicated Server sind es sogar 1 Gbit/s. Und das ist un­ab­hän­gig von Ihrem Verbrauch: Dank Unlimited Traffic können Sie jederzeit mit der kom­plet­ten Band­brei­te rechnen.

HLS Streaming-Server bei IONOS hosten

IONOS hat ver­schie­de­ne Server-Lösungen im Portfolio:

  • Dedicated Server: eigene Hardware mit AMD- oder Intel-Pro­zes­so­ren und mi­nu­ten­ge­nau­er Ab­rech­nung
  • vServer: Vir­tua­li­sie­rung auf höchstem Niveau – für Un­ab­hän­gig­keit und Si­cher­heit
  • Cloud Server: ganz flexibel ska­lier­bar und für un­ter­schied­lichs­te An­wen­dungs­fäl­le geeignet

Die Server un­ter­schei­den sich nicht nur in der Aus­stat­tung, sondern auch im Ab­rech­nungs­mo­dell. Während ein vServer immer mit mo­nat­li­chen Fixkosten verbunden ist, werden Dedicated Server und Cloud Server mi­nu­ten­ge­nau ab­ge­rech­net. Wenn man Res­sour­cen bei diesen Modellen freigibt, sinken auch die Kosten. Der Cloud Server hat zudem den Vorteil der großen Fle­xi­bi­li­tät. Egal ob Spei­cher­platz, Ar­beits­spei­cher oder die Anzahl der Pro­zes­sor­ker­ne – Sie buchen nur so viele Res­sour­cen, wie Sie auch wirklich benötigen.

Tutorial: Streaming-Server ein­rich­ten

Ihren eigenen Server für HTTP Live Streaming können Sie in wenigen Schritten selbst ein­rich­ten. Die benötigte Software dafür steht frei im Internet zur Verfügung. In diesem Beispiel benutzen wir einen Windows-Server mit Nginx-Software.

Schritt 1: Server-Ver­bin­dung her­stel­len

Um auf Ihrem Server arbeiten zu können, müssen Sie zunächst eine Ver­bin­dung zu diesem aufnehmen. Bei IONOS loggen Sie sich dafür in Ihr Be­nut­zer­kon­to ein und rufen dann das Cloud Panel auf (dieses Feature finden Sie im Bereich „Server & Cloud“). Unter dem Punkt „Remote-Desktop-Ver­bin­dung“ gibt es einen Download-Link. Klicken Sie diesen an, um die für die Ver­bin­dung be­nö­tig­ten Daten her­un­ter­zu­la­den.

Unter Windows können Sie die her­un­ter­ge­la­de­ne Datei einfach per Dop­pel­klick starten und gelangen dann in das Programm „Remote-Desktop-Ver­bin­dung“. Dort müssen Sie nur noch das Passwort eingeben, dass Sie ebenfalls im Cloud Panel finden. Es öffnet sich ein Fenster, dass den Desktop des Servers zeigt.

Hinweis

Auch wenn Sie keinen Windows-PC verwenden, können Sie natürlich eine Ver­bin­dung zum Server aufbauen. Dafür benötigen Sie dann aber eventuell eine zu­sätz­li­che Remote-Desktop-Software.

Schritt 2: Nginx in­stal­lie­ren

Für das HTTP Streaming verwendet man einen ge­wöhn­li­chen Webserver auf Basis von Nginx. Achten Sie beim Download darauf, dass die Software das RTMP-Modul enthält – dieses wird für die Über­tra­gung benötigt –, und auf die Ver­wen­dung mit einem Windows-Server ausgelegt ist.

Entpacken Sie das Software-Paket an einen Ort Ihrer Wahl, öffnen Sie dann die Windows-Ein­ga­be­auf­for­de­rung oder die Windows Power­Shell und na­vi­gie­ren Sie zum neu an­ge­leg­ten Nginx-Ordner. Mit folgendem Befehl starten Sie den Webserver:

start nginx

Sie werden zunächst keine Ver­än­de­rung fest­stel­len. Um zu über­prü­fen, ob der Server tat­säch­lich funk­tio­niert, können Sie in einem Browser Ihre eigene IP-Adresse aufrufen. Hier sollte nun eine Nachricht des Web­ser­vers zu sehen sein.

Schritt 3: Kon­fi­gu­ra­ti­on anpassen

Im nächsten Schritt müssen Sie die Kon­fi­gu­ra­ti­on des Web­ser­vers anpassen. Im ent­spre­chen­den Ordner sollten Sie die Datei nginx.conf finden. An deren Ende fügen Sie folgenden RTMP-Teil ein:

rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application show {
            live on;
            hls on;
            hls_path /nginx/hls/;
            hls_fragment 3;
            hls_playlist_length 60;
            deny play all;
        }
    }
}

Den Pfad für Ihren HLS Stream können Sie selbst wählen. Auch der Name der „ap­pli­ca­ti­on“ (hier „show“) ist ganz Ihnen über­las­sen. Wichtig ist nur, dass Sie die Kon­fi­gu­ra­tio­nen auch an anderen Stellen kon­se­quent wei­ter­be­nut­zen.

Außerdem müssen Sie noch HTTP-Ein­stel­lun­gen in der Kon­fi­gu­ra­ti­ons­da­tei hin­ter­le­gen:

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        off;
    server_names_hash_bucket_size 128;
## Start: Timeouts ##
    client_body_timeout   10;
    client_header_timeout 10;
    keepalive_timeout     30;
    send_timeout          10;
    keepalive_requests    10;
## End: Timeouts ##
    server {
        listen       80;
        server_name  localhost;
    location /hls {
        add_header Cache-Control no-cache;
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        root /nginx/;
    }
}

Speichern Sie die Datei und starten Sie den Webserver neu. Am ein­fachs­ten geht das, indem Sie im Task-Manager den oder die Prozesse von Nginx stoppen und den Server dann erneut per Befehl starten.

Schritt 4: Port freigeben

Damit Ihr Stream abgerufen werden kann, müssen Sie einen Port freigeben. Bei IONOS geht auch das über das Cloud Panel. In den Firewall-Ein­stel­lun­gen (unter „Netzwerk“) müssen Sie einen neuen Eintrag anlegen und TCP-Port 1935 freigeben. Für HTTP sollten Sie zudem Port 80 freigeben, falls Ihr Server diesen Port nicht ohnehin bereits frei­ge­ge­ben hat. Diese beiden Ports haben Sie auch zuvor in die Kon­fi­gu­ra­ti­ons­da­tei von Nginx ein­ge­tra­gen.

Schritt 5: HTTP Live Streaming starten

Für einen Live-Stream benötigen Sie noch die passende Software. Beliebt bei Streamern ist vor allem die Open Broad­cas­ter Software (OBS). Dort tragen Sie dann die folgende Adresse ein:

rtmp://<ip address>/show</ip>

Sie müssen an dieser Stelle die IP-Adresse des Servers eintragen. Diese finden IONOS-Kunden bei­spiels­wei­se im Cloud Panel. Für Test­zwe­cke können Sie auch localhost statt der IP-Adresse eintragen.

Schritt 6: Stream auf Website in­te­grie­ren

Sie können Ihren Stream nun bereits über einen Medien-Player wie VLC abrufen. HLS macht es aber möglich, den Stream auch über eine Website an­zu­bie­ten. Dafür müssen Sie entweder eine be­stehen­de Website anpassen oder ein neues HTML-Dokument erstellen. Der Nginx-Webserver kommt bereits mit einem HTML-Dokument: index.html. Dort tragen Sie folgenden Quelltext ein:

<!DOCTYPE html>
<html>
        <head>
        <meta charset=utf-8 />
        <title>HLS</title>
                <link href="js/video-js.css" rel="stylesheet">
                <script src='js/video.min.js'></script>
                <script src="js/videojs-http-streaming.js"></script>
        </head>
<body>
<div align="center">
        <video-js id="live_stream" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto" autoplay="true" width="1280" height="720" poster="/poster.jpg">
        <source src="/hls/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='https://videojs.com/html5-video-support/' target='_blank'>supports HTML5 video</a>
        </p>
        </video-js>
        
    <script>
        var player = videojs('live_stream');
    player.play();
    </script>
</div>
        
</body>
</html>

Es handelt sich hierbei um eine ru­di­men­tä­re Website, die aus­schließ­lich den Player Video.js mit Ihrem Stream anzeigt. Wenn Sie den Stream anderen zur Verfügung stellen wollen, sollten Sie noch zu­sätz­li­che Inhalte einbauen und die Website an­spre­chen­der gestalten – z. B. per CSS. Oder Sie bauen den Teil in eine be­stehen­de, bereits aus­ge­schmück­te Website ein. Wichtig ist, dass der Pfad zu den Video-Dateien korrekt angegeben ist: <source src="https://www.ionos.de/digitalguide/hls/test.m3u8" type="ap­pli­ca­ti­on/x-mpegURL">. Wenn Sie Ordner oder Datei anders benennen wollen, müssen Sie das auch hier anpassen.

Damit der Player funk­tio­niert, benötigen Sie noch die passenden Ja­va­Script- und CSS-Dateien. Diese finden Sie im of­fi­zi­el­len GitHub-Re­po­si­to­ry von Video.js. Legen Sie diese in denselben Un­ter­ord­ner, in dem auch die HTML-Dokumente liegen. Nun ist ein Video-Player mit Ihrem Stream auf der Website sichtbar.

Zum Hauptmenü