Audio - Video - Foto | Software | Thorsten Eggeling | 4/2023 | 26. Mai 2023

Medienserver im Heimnetz

Es muss nicht immer Netflix sein: Eigene Sammlungen von Audio- und Videodateien
lassen sich im eigenen Netzwerk bereitstellen und komfortable Mediacenter-Oberflächen garantieren einen gemütlichen Filmabend.

Es muss nicht immer Netflix sein: Eigene Sammlungen von Audio- und Videodateien lassen sich im eigenen Netzwerk bereitstellen und komfortable Mediacenter-Oberflächen garantieren einen gemütlichen Filmabend.

Eine umfangreiche Sammlung mit Audio- und Videodateien macht wenig Laune, wenn man die Inhalte nicht überall abspielen kann. Bei PCs und Notebooks gibt es keine besonderen Herausforderungen: Man öffnet die Dateien der lokalen Festplatte einfach über den Dateimanager oder lädt sie von Netzwerkfreigaben. Der Aufwand erhöht sich, wenn man auch TV-Geräte, Tablets oder Smartphones als Abspieler mit maximalem Komfort nutzen möchte. Smart-TVs können mit Freigaben im Netzwerk standardmäßig nichts anfangen. Die eingebauten Mediaplayer spielen zwar Dateien von einem USB-Stick ab, aber längst nicht alle Formate. Der Zugriff auf DLNA/UPnP-Mediaserver im Netzwerk wird unterstützt, ist aber eher eine Notlösung. Auch hier werden oft nicht alle Dateien abgespielt und die Player sind langsam und umständlich zu bedienen.

Wer die Oberflächen etwa von Netflix oder Amazon Prime gewohnt ist, wird auch im eigenen Netzwerk auf ähnliche Funktionen kaum verzichten wollen. Wir stellen Software vor, mit der sich unter Linux ein Medienserver einrichten lässt, der Inhalte passend für alle Geräte ausliefert. Das System kann unter Ubuntu oder Linux Mint laufen, aber auch ein Raspberry Pi 4 reicht mit Abstrichen aus.

Jellyfin installieren: Im Downloadbereich gibt es Anleitungen für alle gängigen Linux-Distributionen. Für Ubuntu und Linux Mint gibt es ein Script, das die Software einrichtet.

Medienserver Jellyfin einrichten

Jellyfin (https://jellyfin.org) ist eine Open-Source-Abspaltung von Emby (https://emby.media). Letzteres wird nicht mehr als Open Source angeboten und ist teilweise kostenpflichtig. Funktional ist Jellyfin in etwa identisch. Für die Jellyfin-Serverkomponente gibt es im Downloadbereich Installationsanleitungen für Linux-Distributionen, Windows und Ma-OS. Clientsoftware ist für Linux, Windows, Mac-OS, Android, iOS, Android-TV/Fire-TV, Roku und Web-OS (LG Smart-TV) verfügbar. Außerdem gibt es eine Erweiterung für die Einbindung in Kodi.

Der Jellyfin-Server bietet eine Weboberfläche für die Konfiguration, die auch gleichzeitig die Multimedia-Oberfläche ist. Sie haben Zugriff auf Bibliotheken, die Sie für Ihre Audio- und/oder Videodateien erstellen. Die Inhalte lassen sich im Browser abspielen oder an ein anderes Gerät senden. Für Nutzer von Ubuntu und Linux Mint gelingt die Einrichtung am einfachsten per Installations-Script im Terminal:

wget -O- https://repo.jellyfin.org/install-debuntu.sh | sudo bash

Das Script ist auch für Raspberry Pi geeignet, enthält aber zur Zeit einen Fehler, der die Erkennung des Systems verhindert. Der lässt sich korrigieren: Laden Sie das Script mit

wget https://repo.jellyfin.org/install-debuntu.sh

und öffnen Sie es in einem Editor. Im Abschnitt, der mit „raspbian)“ beginnt, fügen Sie folgende Zeile hinzu:

VERSION="$( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )"

Sie können die Zeile aus dem Block unter „*)“ kopieren. Danach starten Sie das Script mit diesem Befehl

sudo bash install-debuntu.sh

und folgen den Anweisungen des Assistenten. Das Script richtet ein apt-Repository für Jellyfin ein und installiert die erforderlichen Pakete. Danach rufen Sie im Browser die Adresse

http://[IP-Adresse]:8096

auf. Bei der Ersteinrichtung legen Sie die Anzeigesprache, Benutzernamen und Passwort fest. Das damit erstellte Benutzerkonto ist zugleich der Administrator des Servers. Bei Bedarf können Sie später zusätzliche Benutzer anlegen.

Per Klick auf „Medienbibliothek hinzufügen“ richten Sie die erste Bibliothek ein. Wählen Sie einen Inhaltstyp wie „Filme“, „Musik“ oder „Serien“. Klicken Sie auf das „+“-Zeichen neben „Verzeichnisse“ und geben Sie den Pfad an, über den die Mediendateien zu erreichen sind. Netzwerkpfade sind nicht möglich. Ordner, beispielsweise von einem NAS, müssen in das Dateisystem eingebunden sein. Stellen Sie die bevorzugte Sprache und das Land ein. Inhaltstyp und Sprach­ein­stellungen verwendet Jellyfin für den Download von Medieninformationen. Damit das optimal funktioniert, sollten die Dateien eindeutig benannt sein und sich jeweils in eigenen Ordnern befinden. Beispiele für die Organisation finden Sie unter https://jellyfin.org/docs/general/server/media/movies.

Nach Abschluss des Assistenten melden Sie sich bei Jellyfin an. Der Server beginnt damit, die Dateien zu katalogisieren und die Medieninformationen zu ermitteln. Abhängig vom Umfang der Sammlung kann das Minuten oder Stunden dauern.

Bibliothek erstellen: Jellyfin organisiert zusammengehörige Inhalte in Bibliotheken. Legen Sie einen Inhaltstyp fest, damit der Server passende Medieninformationen im Internet suchen kann.

Jellyfin-Server konfigurieren

Mit der Basiskonfiguration ist der Jellyfin-Server einsatzfähig. Die erweiterte Konfiguration erfolgt über die Weboberfläche nach einem Klick auf das „Hamburger“-Menü (drei horizontale Linien) links oben. Gehen Sie unter „Administration“ auf „Übersicht“.

Unter „Bibliotheken“ erstellen Sie weitere Sammlungen für die Inhalte. Es bleibt Ihnen überlassen und es hängt von der Menge und Art der Dateien ab, wie differenziert Sie vorgehen. In der Regel sollten Kategorien wie „Musik“, „Dokus“, „Serien“ und „Filme“ genügen. Es erhöht die Übersicht, wenn sich nicht zu viele Inhalte in einer einzelnen Bibliothek befinden.

Transcoder: Klicken Sie auf „Wiedergabe“. Unter „Hardwarebeschleunigung“ können Sie einstellen, ob Jellyfin die Unterstützung durch den Grafikchip verwenden soll. Wählen Sie die passende Option für AMD-, Nvidia- oder Intel-GPUs. Nutzer eines Raspberry Pi 4 stellen „Video4Linux2 (V4L2)“ ein. Abhängig von der Auswahl lässt sich die Transcodierung über die GPU meist für mehrere Codecs aktivieren. Ob eine Transcodierung stattfinden muss, legt der Server aufgrund der Anforderungen des Clients automatisch fest. Die meisten Dateien lassen sich ohne Sonderbehandlung direkt ausliefern (Direct Play). Der Inhalt kann aber auch bei Bedarf während des Abspielens in einen neuen Container gepackt werden (Remux). Wenn der Client mit dem Codec der Tonspur nichts anfangen kann, wird nur diese konvertiert (Direct Stream). Bereitet nur der Videostream Probleme, wandelt Jellyfin ihn um (Transcode). Diese letzte Methode erfordert die meiste Rechenzeit für die Server-CPU, die sich bei aktivierter Hardwarebeschleunigung reduzieren lässt. Was möglich ist, hängt von Grafikchip und Treiber ab (siehe auch Artikel ab Seite 54). Unter „Administration –› Übersicht“ sehen Sie, was gerade abgespielt wird. Per Klick auf die „i“-Schaltfläche ermitteln Sie, welcher Modus gerade zum Einsatz kommt.

Unter „Transkodierungspfad:“ ist der Ordner angegeben, in dem Jellyfin die umgewandelten Streams speichert. Wenn der Speicherplatz knapp wird, geben Sie einen Ordner auf einer anderen Festplatte an. Das ist vor allem beim Raspberry Pi wahrscheinlich notwendig, sofern das System auf SD-Karte läuft. Verwenden Sie einen zusätzlichen USB-Stick als Datenspeicher. Der ist zudem schneller und robuster.

Jellyfin nutzt für die Transcodierung eine eigene Version von Ffmpeg 5.1.3, die im Ordner „/usr/lib/jellyfin-ffmpeg/ffmpeg“ liegt. Alternativ können Sie das Paket „jellyfin-ffmpeg6“ mit Ffmpeg 6.0 installieren. Die Version funktioniert ab Jellyfin 10.8.10 und benötigt einen Nvidia-Treiber ab Version 520. Der Umstieg lohnt sich allerdings nur, wenn man den AV1-Encoder verwenden möchte und die Grafikkarte das auch unterstützt.

DLNA/UPnP: Unter „Geräte –› DLNA“ ist standardmäßig die Option „‚Wiedergeben auf DLNA-Funktion aktivieren“ eingeschaltet. Man kann über das Icon rechts oben ein Ausgabegerät wählen. Das Video wird dann nicht lokal abgespielt, sondern an dieses Gerät geschickt. Schalten Sie „DLNA-Server aktivieren“ ein, wenn beispielsweise Ihr TV-Gerät einen DLNA-Player unterstützt. Der Jellyfin-Server taucht in der Übersicht meist unter „Mediaserver“ auf.

Optimierte Umwandlung: Sollte ein Client eine Datei nicht direkt abspielen können, transcodiert Jellyfin die Streams. Mit Hardwarebeschleunigung geht das schneller.

Jellyfin-Server für Live-TV nutzen

Jellyfin kann IPTV-Server einbinden, wenn diese eine M3U-Liste anbieten. Dabei handelt es sich um eine Wiedergabeliste, die Informationen zu Kanälen und Frequenzen enthält. Die Konfiguration erfolgt über „Live-TV –› Live-TV“. Nach einem Klick auf die „+“-Schaltfläche wählen Sie unter „Typ des Tuners“ den Eintrag „M3U Tuner“. Tippen Sie die URL zur M3U-Datei unter „Datei oder URL:“ ein. Nach einem Klick auf „Speichern“ stehen die Kanäle auf der Startseite unter „Live TV“ zur Verfügung. Bei unseren Tests lieferte der Tuner allerdings keine EPG-Daten, was aber am Gerät liegen kann.

Eine Alternative ist der Tvheadend-Client, den Sie unter „Erweitert –› Plugins –› Katalog“ hinzufügen können. Dafür benötigen Sie zusätzlich einen Tvheadend-Server (siehe Kasten). In der Plug-in-Konfiguration geben Sie IP-Adresse, Port, Benutzername und Passwort ein. Nachdem Jellyfin die Daten synchronisiert hat, sehen Sie auf der Startseite unter „Live TV“ Kanäle und Programminformationen. Außerdem lassen sich Sendungen aufzeichnen – auf Wunsch auch nach Zeitplan. Die Aufnahmen speichert der Tvheadend-Server, und in den Jellyfin-Clients sind sie dann unter „TVHead­End Recordings“ zu finden.

Live-TV ansehen: Für den TV-Server Tvheadend bietet Jellyfin ein Plug-in, für das Sie IP-Adresse, Port, Benutzernamen und Passwort einstellen. Über Tvheadend lassen sich auch EPG-Daten verwenden.

Clients für Jellyfin einrichten

Am PC oder Notebook genügt an sich der Browser für den Zugriff auf den Jellyfin-Server. Wer dennoch ein eigenständiges Programm bevorzugt, lädt über https://github.com/jellyfin/jellyfin-media-player unter „Release“ die Clientsoftware herunter. Verfügbar sind DEB-Pakete für Ubuntu, Linux Mint und Debian sowie Setupprogramme für Windows und Mac-OS.

Infos zu weiteren Clientdownloads finden Sie auf https://jellyfin.org/downloads. Die Android-App und Jellyfin for Android TV werden bei Google Play, im Amazon App Store und bei F-Droid angeboten. Auf dem Fire-TV-Stick kann man Jellyfin for Fire TV direkt auf dem Gerät über den Amazon App Store einrichten. Die iOS-App gibt es im Apple App Store. Besitzer eines LG-Smart-TV mit Web-OS ab Version 5.0 (Baujahr ab 2020) installieren die App direkt am TV-Gerät über den LG Content Store. Beim ersten Start dieser Clientprogramme wird der Server meist automatisch gefunden. Wenn nicht, geben Sie explizit die IP-Adresse inklusive Port ein, die Sie auch im Browser verwenden. Nach der Anmeldung lassen sich die Inhalte vom Server streamen. Die Einstellungen für ein Konto gelten für Browser und Clients. Im Konto wird auch gespeichert, welche Inhalte Sie gesehen oder begonnen haben. Wenn mehrere Nutzer Jellyfin verwenden, sollten Sie daher in den Servereinstellungen Benutzerkonten erstellen, damit Konfiguration und Listen individuell abgelegt werden.

Jellyfin zusammen mit Kodi verwenden

Wer bereits einen Mediacenter-PC oder Raspberry Pi mit Kodi (https://kodi.tv) beziehungsweise Libr Eelec (https://libreelec.tv) eingerichtet hat, benötigt Jellyfin eigentlich nicht. In Kodi kann man lokale Laufwerke und Netzwerkfreigaben in Bibliotheken aufnehmen. Die Oberfläche zeigt Beschreibungen sowie Vorschaubilder und ist teilweise praktischer zu bedienen als die der Jellyfin-Clients.

Kodi beherrscht auch DLNA/UPnP und kann als Medienserver für Smart-TVs dienen. Eine Transcodierung erfolgt jedoch nicht, sodass sich einige Inhalte auf dem TV-Gerät nicht abspielen lassen. Außerdem lässt sich Kodi nicht als App auf dem Smart-TV installieren und man benötigt daher einen Zuspieler. Das kann auch ein Fire-TV-Stick sein, auf dem man Kodi jedoch manuell installieren muss (siehe https://www.pcwelt.de/article/1177253).

Es spricht nichts gegen einen gemischten Betrieb von Kodi und Jellyfin. Man kann die jeweiligen Clients auf den Geräten einsetzen, auf denen man sie bevorzugt oder wo sie technisch notwendig sind. Wer möchte, kann Jellyfin auch in Kodi einbinden. Man spart sich dann die Pflege der Kodi-Bibliotheken und verwendet nur die Inhalte vom Jellyfin-Server.

Schritt 1: Auf dem Jellyfin-Server installiert man zuerst im Bereich „Administration –› Übersicht“ über „Erweitert –› Plugins –› Katalog“ die Erweiterung „Kodi Sync Queue“. Sie sorgt für die schnellere Synchronisation der Bibliotheken mit dem Kodi-Client. Danach lädt man über https://kodi.jellyfin.org/repository.jellyfin.kodi.zip die Konfigurationsdatei für das Jellyfin-Repository herunter, die man in Kodi in den Einstellungen unter „Addons –› Aus ZIP-Datei installieren“ einrichtet. Wenn Sie danach gefragt werden, aktivieren Sie die Option „unbekannte Quellen“.

Schritt 2: Unter „Aus Repository installieren“ wählen Sie „Kodi Jellyfin Addons –› Video Addons“ und installieren „JellyCon“ und „JellyFin“. In der Konfiguration von Jellycon hinterlegen Sie die IP-Adresse des Servers und das Benutzerkonto. Bei der Auswahl des Modus klicken Sie abschließend auf „Add-on Mode“.

Schritt 3: Gehen Sie dann in Kodi auf „Videos –› Video-Addons –› Jellyfin –› Datenbanken verwalten –› Bibliothek hinzufügen“. Wählen Sie die gewünschten Jellyfin-Bibliotheken aus oder „Alle“. Bestätigen Sie mit „OK“. Nach Abschluss der Synchronisation sind beispielsweise unter „Filme“ die Jellyfin-Bibliotheken an ihrem Icon zu erkennen.

Kodi und Jellyfin: Mit Hilfe einer Erweiterung bindet Kodi die Bibliotheken eines Jellyfin-Servers ein. Kodi und die Jellyfin-Clients zeigen die gleichen Inhalte, was die Verwaltung vereinfacht.

Zusätzliche Info: Tvheadend als Live-TV-Server

Die Voraussetzung für Tvheadend

(https://tvheadend.org) ist eine von Linux unterstützte TV-Karte oder ein TV-Stick für DVB-C, DVB-S oder DVB-T (siehe https://linuxtv.org). Die Einrichtung eines IPTV-Receivers ist einfacher, weil dafür keine Treiber erforderlich sind. Tvheadend liefert Streaming-URLs und EPG-Daten für Jellyfin oder Kodi (siehe https://kodi.wiki/view/Add-on:Tvheadend_HTSP_Client). Unverschlüsselte Programme kann man mit allen Geräten empfangen und aufzeichnen. Für verschlüsselte Sendungen benötigen Sie ein Modell mit CI/CI+-Schacht und eine Karte für den jeweiligen Anbieter.

Tvheadend lässt sich im Terminal mit zwei Befehlen einrichten:

wget -O- https://dl.cloudsmith.io/public/tvheadend/tvheadend/setup.deb.sh | sudo bash

sudo apt install tvheadend

Die Konfiguration erfolgt im Browser über die Adresse http://[IP]:9981. Beim ersten Aufruf fragt ein Assistent die Basisinformationen ab und Sie erstellen dann das Admin-Konto. Dann konfigurieren Sie den DVB-Tuner beziehungsweise den IPTV-Receiver. Wie das genau zu erfolgen hat, hängt vom jeweiligen Empfangsgerät ab. Die Beschreibung für einen IPTV-Receiver lesen Sie unter https://www.pcwelt.de/article/1139992.