Gestern Abend wollte ich bei meiner Familie Zuhause endlich mal mein eigenes Mediacenter am Smart-TV testen. Ich habe mir vor kurzem Jellyfin geholt, eine Open-Source-Software Server Lösung um ein Netflix ähnliche Webinterface zu erhalten und Serien und Filme darüber abspielen zu können. Das besondere, der Server kann auch auf meinem Windows Laptop laufen und man kann bequem über die Oberfläche dann die einzelnen Episoden schauen. Natürlich kann man auch im Windows Dateimanager die einzelnen Videodateien zusammensuchen, aber eine Netflix ähnliche Oberfläche ist halt doch irgendwie bequemer.
Doch so einfach ist es nicht, dieses Streaming Erlebnis aus dem eigenen Laptop rauszubekommen und ist selbst für mich als ITler, fraglich, warum es nur so schwer sein muss, damit man streamen kann.
Problem 1: Die Firewall
Prinzipiell ist die Firewall sehr wichtig, denn diese verhindert, dass aus dem Internet einfach jemand aufs den Server/Computer zugreifen kann. Bildlich kann man es sich so vorstellen: Die Firewall ist eine Tür, aber selbst wenn man einen Schlüssel hat um reinzukommen, muss jemand im Haus diesen erst freigeben, dass man mit diesem Schlüssel die Tür öffnen kann. Ich weiß nicht, ob diese Analogie gut passt, mir fällt aber gerade keine bessere ein.
Die Firewall ist der Schutzwall, und diesen sollte man nicht abschalten. Doch wie kann man nun vom Server den Film an den Client streamen?
Problem 2: Die Portfreigabe
Jede Software, die einen Server mitliefert, läuft auf dem localhost, das ist der lokale Rechner. Je nach Server/Software, wird ein anderer Port genutzt. Jellyfin zum Beispiel nutzt standardmäßig den Port 8096. Wenn der Server läuft, kann man im Browser über localhost:8096 auf das Mediacenter zugreifen und lokal im Browser streamen. Das funktioniert ohne Probleme.
Doch wie kann man von außerhalb auf den Server zugreifen?
Hier kommt eine wichtige Sichtweise, die man verstehen sollte: Der Client fragt zuerst den Server an, nicht der Server liefert an den Client.
Das ist wichtig zu verstehen, denn so muss die Firewall dann eingestellt werden. In den Firewall Einstellungen ist hierbei von „eingehenden Verbindungen“ die Rede, also wenn ein Client von außen in den von der Firewall geschützten Bereich zugreifen möchte, um dort einen Dienst/Server zu erreichen.
In den Firewall Einstellungen wählt man dann „Port“ aus und wählt als Verbindungstyp „TCP“ aus. Dann gibt man als Port 8096 an und im nächsten Schritt kann man dieser Freigabe einen Namen und eine Beschreibung geben. Mit dem Namen „Jellyfin“ kann man so später schneller herausfinden, wofür diese Freigabe war.
Gar nicht so schwer, oder? Falsch, ich habe locker 30 Minuten gebraucht um zu sehen, wo sich nun die Einstellung dafür setzen lässt, da ich in den letzten 10 Jahren nie die Funktion gebraucht hatte, weder bei Windows XP, noch Windows Vista, Windows 7 oder Windows 10.
Tja, für alles gibt e ein erstes Mal.
Doch ich frage mich, muss es denn so schwer sein? Warum gibt es keine Möglichkeit, direkt über Jellyfin eine Filterregel für eingehende Verbindungen in der Firewall zu ermöglichen? Quasi eine API Schnittstelle zum System, das man selbst als Laie nicht großartig suchen muss? Leider gibt es das nicht.
Nun konnte ich mindestens mit dem, was ich jetzt realisiert hatte, innerhalb meines Heimnetzwerks streamen. Es ist aber noch nicht möglich das man ins Internet streamen kann, das hängt mit der Layer Struktur zusammen.
Hier eine einfach gehaltene Erklärung:
- localhost:8096 – ist das lokale System
- 127.0.0.1:8096 – ist gleichbedeutend wie localhost, je nach Anwendung unterscheidet sich das, was man eingeben soll, um darauf zuzugreifen
- 192.168.178.XX:8096 – ist IP-Adresse vom Router, diese sollte eigentlich bei allen ähnlich sein, dies ist das Heimnetzwerk. Die hinteren Zahlen, die ich durch ein XX gekennzeichnet habe, werden in Abhängigkeit von der Anzahl Clients im Heimnetz vergeben. Nachdem die Firewall die Freigabe auf dem Computer hat um eingehende Verbindungen auf Port 8096 zuzulassen, kann nun mit dieser IP-Adresse und dem Port, zum Beispiel 192.168.178.XX:8096 innerhalb des WLAN-Netzwerks, auf den Server zugegriffen werden, das funktioniert vom Smartphone über die Jellyfin eigene App im Google Play Store (bei Apple/iOS weiß ich es gerade nicht) und auch beim Smart-TV (hier kommt das nächste Problem).
- XX.XX.XX.XX – die öffentliche IP hat jeder, der im Internet unterwegs ist, diese kann man über verschiedene Webseiten angezeigt bekommen. Damit man über diese öffentliche IP streamen kann, muss noch im WLAN-Router der die Clients im Heimnetzwerk mit dem Internet verbindet, separat eine Portfreigabe erhalten, damit man von außen mit einem Port auf den Server zugreifen kann. Das hatte ich bereits Testhalber bei mir Zuhause probiert und funktioniert tatsächlich gut, so konnte ich mit meinem Smartphone über das Mobilfunknetz über meine öffentliche IP und dem Port den ich bei meinem WLAN Router freigegeben habe, auf mein Mediacenter zugreifen, es war aber nur ein Test und ist wieder geschlossen. Daher gehe ich auf diesen Punkt nicht weiter ein.
Problem 3: Smart-TV
Sehr viele, wenn nicht sogar die Mehrheit (recherschieren?) hat in Deutschland einen Smart-TV, meine Familie hat diesen erst vor ein paar Monaten bekommen, nachdem der Plasma-Fernseher der gute 20 Jahre gehalten und funktioniert hat, die Fernbedienung vom Satelliten Receiver einfach nicht mehr zu gebrauchen war und der Smart-TV all das nicht mehr brauchte, sowie Netflix und Co mit drin hat, zusätzlich noch Full-HD 1080p Bild, der alte Plasma Fernseher hatte „nur“ HD 720p, aber im Alltag hatte man eh kaum einen Unterschied gemerkt, und nun ist man bereits an den neuen Smart-TV gewöhnt.
Der Smart-TV war das Ziel, denn nun, wo ich mein Mediacenter innerhalb des Netzwerks darauf zugreifen konnte, dachte ich, dass es ja nicht so schwer wäre nun Jellyfin auf dem Smart-TV zu installieren. Nun, falsch gedacht. Es handelt sich hierbei um einen Smart-TV von Samsung, dort gibt es verschiedene Apps, sogar Spiele, aber keinen richtigen Appstore wie bei Android, wo man einfach eine App seiner Wahl installieren könnte. Die Suche hat also nichts gebracht.
Ich habe es dann versucht mühselig im Webbrowser mit der Fernbedienung einzutippen, nicht schön, wenn man keine Sprachfunktion Fernbedienung hat. Der Webbrowser hatte zumindest versucht, die Jellyfin Anmeldemaske zu laden, aber konnte das wohl nicht verarbeiten und ich konnte auch darüber nicht auf das Mediacenter zugreifen.
Wie soll man dann Inhalte auf den Fernseher drahtlos übertragen?
Problem 4: DLNA
Eine Funktion, die es gibt, nennt sich DLNA, damit kann einfach gesagt Inhalte auf verschiedene Geräte teilen, sofern diese den DLNA Standard korrekt implementiert haben. Ich habe also bei Jellyfin in der Administrator-Verwaltung Weboberfläche nach DLNA geschaut und wurde schnell fündig, man sollte dazu ein Plugin von Jellyfin installieren und den Server neu starten. Gut, warum man so eine wichtige Funktion als Plugin auslagert, erschließt sich mir nicht, aber gesagt, getan, Plugin installiert, Server neu gestartet.
Nun konnte ich von der User Oberfläche rechts oben das DLNA Sharing Icon sehen, wenn man da drauf klickt, wurden alle Geräte gezeigt, auf die man den Inhalt teilen konnte, auch der Smart-TV wurde angezeigt.
Problem 5: Marketing unterschiedlicher Bezeichnungen
Ich habe also den Smart-TV ausgewählt und war voller Erwartung, dass es nun funktionieren würde, dass mein Jellyfin Server läuft und ich am Fernseher den Film schauen konnte. Nun das hat leider nicht funktioniert, denn während Jellyfin sagte, dass die Verbindung hergestellt wurde und ich diese nur wieder trennen kann, zeigte sich auf dem Smart-TV nichts.
Ich habe dann nach Eingangsquelle gesucht, um das Signal zu finden, das ist diese Taste wo man zwischen TV und HDMI etc. auswählen kann. Dort fand ich die Funktion „Screen Mirroring“, und da kommen wir zum nächsten Punkt, Marketing, da sich DLNA wohl zu sperrig für den normalen Verbraucher anhört, muss es ja was hippes und einfach zu verstehendes sein, Screen Mirroring scheint das also zu sein, doch, ist Screen Mirroring dasselbe wie DLNA?
Oder ist das nur eine vereinfachte Implementierung? Wird DLNA nicht vollständig unterstützt? Ich zerbreche mir daran den Kopf und denke darüber nach, das es für mobile Geräte, bei meinem Xiaomi Smartphone die möglichkeit gibt den Bildschirm zu teilen, vielleicht funktioniert ja das?
Ich gehe in die Einstellungen und gehe zum Menüpunkt „Verbindung und Teilen“ und weit unten im Bereich „Andere“, sehe ich „WLAN-Anzeige“ mit der Beschreibung „Drahtlos mit einem Bildschirm verbinden“. Ich kann nur den Kopf schütteln, jedes Unternehmen bezeichnet das anders, ja wie soll denn der Kunde, der es nutzen will wissen, ob es überhaupt miteinander Kompatibel ist??
Problem 6: Display bleibt eingeschaltet
Nachdem ich nun es geschafft hatte meinen Smartphone-Bildschirm über die WLAN-Anzeige an den Smart-TV Screen Mirroring Modus zu bringen, konnte ich nun über die Jellyfin App auf dem Smartphone, welche mit dem Server auf meinem Laptop verbunden ist, endlich meinen Film schauen. Blöderweise, funktioniert das Screen Mirroring nur, wenn der Bildschirm eingeschaltet ist, obwohl der Player im Vordergrund den Film abspielt.
Also musste ich das Smartphone am Ladekabel lassen, was ironischerweise neben dem Fernseher war und ich musste aufstehen um den Film anzuhalten oder die Wiedergabe fortzusetzen.
Zusammenfassung: Streaming mit Hindernissen
Damit ich drahtlos einen Film von meinem Laptop auf dem Smart-TV streamen kann, brauche ich eine Portfreigabe in der Windows Firewall, dann brauche ich aktiviertes DLNA zum streamen innerhalb des Netzwerks, dann brauchte ich die Jellyfin App auf dem Smartphone um auf den Server Inhalt zugreifen zu können und musste meinen Smartphone-Bildschirm an den Smart-TV teilen, damit ich meinen Film anschauen kann, während mein Smartphone Display die ganze Zeit eingeschaltet war.
Ja, Plug and Pray. Es ist doch unglaublich, dass wir im Jahr 2024, solche Probleme haben einen Standard korrekt anzuwenden, welcher einfach funktioniert, warum kann ich von meinem Laptop nicht ohne Probleme an einen Fernseher streamen? Oder warum kann ich bei einem Smart TV nicht eigene Apps installieren?
Warum ist es einfacher, und auch weniger Zeitaufwendig, einfach ein HDMI Kabel zu nehmen um direkt den Laptop mit dem Fernseher zu verbinden, um darüber dann den Film zu schauen? Von beiden Fällen nämlich abgesehen, war ich sowieso zu keinem Zeitpunkt in der Lage den Jellyfin Inhalt mit der Fernbedienung vom Fernseher steuern zu können, also egal ob ich per Smartphone den Film abspiele oder den Laptop per HDMI angeschlossen habe, ich müsste sowieso immer aufstehen.
Warum? Warum haben wir 2024 nicht funktionierende und verlässliche Lösungen, die es einem nicht schwer machen einen Film vom Laptop an einen Smart-TV zu streamen?
Habe ich etwas vergessen? Gibt es bereits einen anderen Standard den ich nicht im Blick habe?