In Zeiten immer beliebter werdender Streamingdienste wie Netflix oder Amazon Prime Video gerät die eigene Film- und Seriensammlung häufig ein wenig in den Hintergrund. Trotzdem schlummern zahlreiche Mediendateien auf ebenso zahlreichen NAS – und das auch mit gutem Grund: Nicht alle Filme und Serien stehen online zur Verfügung. Als Besitzer eines QNAP-NAS kommst du dabei in den Genuss besonderer Vorteile, denn dein Gerät funktioniert ganz gut als kleiner Streaming-Server, solange nur ein einzelner User gleichzeitig streamt. Die CPU läuft nämlich je nach Content, bereits hier fast auf Anschlag. Eine Hardware-Transkodierung per Grafikkarte kann dabei massiv Abhilfe schaffen. Wir zeigen dir, wie.
CPU-Transkodierung als Flaschenhals
Die Problemstellung in unserem Szenario ist relativ einfach. Wir möchten mehreren Benutzern gleichzeitig das Streamen von Inhalten auf unserem QNAP-NAS ermöglichen, ohne dabei Bildaussetzer oder sonstige Leistungseinbußen zu provozieren. Immerhin soll das NAS nebenher auch für andere laufende Aufgaben noch ausreichend Ressourcen übrighaben.
Die meisten NAS von QNAP besitzen einen PCIe-Slot, auf welchem du eine Grafikkarte installieren kannst. Klingt erstmal etwas nach Overkill, bringt dir aber gerade in Sachen Medienstreaming einen riesigen Vorteil. Die GPU übernimmt die gesamte Encodierung des Streams und die CPU bleibt frei für andere Dinge. Je nach Grafikkarte kannst du dabei bis zu 40 oder sogar noch mehr Benutzer gleichzeitig mit einem qualitativ hochwertigen Stream versorgen.
Bevor du dein Projekt beginnst
Mache dir noch, bevor du auch nur eine einzige Komponente orderst, Gedanken über dein System. Prüfe, ob dein NAS überhaupt die Voraussetzungen bietet – allen voraus eine Intel-CPU sowie einen PCIe-8x- oder -16x-Steckpatz. Vor allem kleinere, aber trotzdem leistungsstarke NAS besitzen zwar meistens einen passenden Anschluss, bieten aber nicht genug Platz für eine konventionelle Grafikkarte. In diesem Fall benötigst du entweder eine GPU mit geringer Bauhöhe (low profile) oder wenn du die Bastellösung mit mehr Leistung bevorzugst, ein PCIe-Riserkabel. Letzteres ermöglicht dir, den PCIe-Port auf dem Mainboard deines NAS dorthin zu verlegen, wo dein Grafikbolide Platz hat.
Apropos Bolide, natürlich benötigst du bei leistungsstärkeren GPUs eine passende Stromversorgung. Das QNAP-Netzteil bringt nämlich keine 12-V-ATX-Anschlüsse oder -Kabel mit. Zur Not funktioniert ein kompatibles PC-Netzteil, das du einfach mit einem entsprechenden Ein-Aus-Schalter bestückst.
Für die einwandfreie Umsetzung dieses Projektes benötigst du also:
- Grafikkarte mit geringer Bauhöhe (oder eine beliebige andere Nvidia-GPU, wenn du gerne bastelst)
- PCIe-Riserkabel (falls deine GPU nicht ins NAS passt)
- Je nach Leistung ein externes Netzteil für die GPU (beziehungsweise im Optimalfall ein Gehäuse)
- Ein wenig Zeit, Geschick und Geduld für die Umsetzung
Solltest du dir nicht sicher sein, ob deine Nvidia-GPU die Videoencoding-Funktion überhaupt unterstützt, kannst du das in dieser Tabelle recherchieren. Viele älter Modelle oder Einsteiger-Grafikkarten besitzen den notwendigen ASIC-Chip nämlich nicht.
Schrittweise Installation der (externen) Grafikkarte
Hast du alle Vorkehrungen getroffen und kontrolliert, ob dein NAS mit einer GPU kompatibel ist, geht es an den praktischen Teil unseres Tutorials. Achte darauf, dass du dein NAS vom Stromnetz trennst, bevor du dein Projekt beginnst.
- Öffne als Erstes das NAS-Gehäuse, indem du die Schrauben an der Rückseite löst. Ziehe den Gehäusedeckel nach hinten ab und achte darauf, dass du keine der innen liegenden Komponenten dadurch beschädigst.
- Bringe das PCIe-Riserkabel am PCIe-Slot des Boards deiner QNAP an. Gehe hier mit besonderer Vorsicht ans Werk, diese Kabel sind nämlich überaus empfindlich und brechen leicht.
- Führe anschließend die Grafikkarte in den PCIe-Slot am anderen Ende des Kabels und arretiere dies, wenn sich die Möglichkeit bietet.
- Schließe abschließend den ATX-12-Volt-Stecker deines (externen) Netzteils an die Grafikkarte an. Wichtig hierbei ist, dass du beim Hochfahren zuerst die GPU mit Strom versorgst und beim Herunterfahren zuerst das NAS abschaltest. Ansonsten kann es vorkommen, dass das NAS die Grafikkarte beim Start nicht erkennt oder dich mit Gepiepse daran erinnert, dass die Komponente keinen Saft hat.
- Je nach Lösungsweg kannst du das Gehäuse deines QNAP-NAS wieder schließen und das Strom- und Netzwerkkabel verbinden.
Die Variante mit etwas weniger Leistung beziehungsweise eine Low-Profile-GPU ist hier klar im Vorteil, da du dir in diesem Fall die Schritte 2-4 sparst. Starte deine Komponenten und melde dich nach erfolgreichem Bootvorgang im Webinterface an.
Kleiner Tipp am Rande: Solltest du so wie wir nicht mehr in der Lage sein, die Gehäuseabdeckung zu montieren, behalte die CPU-Temperatur im Auge. Der Luftstrom ist mit fehlender Abdeckung nicht mehr gegeben und selbst wenn der CPU-Lüfter hochdreht, ist dessen Kühlleistung nicht gewiss. Im Extremfall kannst du einfach mit einem 40-mm-Lüfter direkt auf dem CPU-Kühlkörper bessere Ergebnisse erzielen.
Nvidia-Treiberpaket installieren und GPU zuweisen
Softwareseitig geht es zuerst an die Installation der notwendigen Treiber, sodass du die GPU im Anschluss daran in verschiedenen Apps nutzen kannst. Öffne folgend das App Center und suche nach „Nvidia GPU Driver“.
Klicke in den Suchergebnissen beim entsprechenden Dienstprogramm auf den Installieren-Button. Nach einer gefühlten Ewigkeit ist der Treiber betriebsbereit und du kannst den Verwendungszweck der Grafikkarte festlegen.
Öffne dafür die Systemsteuerung, navigiere anschließend in den Bereich „Hardware“, öffne den Reiter „Hardware Ressourcen“ und wähle in der Spalte „Ressourcennutzung“ den Punkt „QTS-Modus“ aus.
Klicke anschließend auf „Übernehmen“. Jetzt steht die GPU für diverse Rechenaufgaben von Medien-Apps zur Verfügung.
Notwendige Apps einrichten
Die einfachste Variante, um ohne großen Aufwand ein funktionierendes Medienstreaming mit aktivierter Transkodierung zu nutzen, ist die App „Video Station“. Bevor du aber damit loslegst, gilt es noch ein paar Vorkehrungen zu treffen.
- Damit du überhaupt Einstellungen in den Bereichen Medienstreaming und Transkodierung festlegen kannst, wird die App „Multimedia Console“ vorausgesetzt. Öffne also das App Center erneut und installiere dort beide genannten Kandidaten.
- Außerdem setzt Hardware-Transkodierung den Cayin MediaSign Player voraus, den du ebenfalls installieren musst. Dieser Punkt gestaltet sich etwas aufwendiger, da du das kostenlose Paket erst „kaufen“ musst. Wie genau du hier am besten vorgehst, kannst du unserem Beitrag unter Punkt „Cayin MediaSign Player installieren“ entnehmen.
- Abschließend solltest du noch den DLNA-Server aktivieren, da du diesen aller Wahrscheinlichkeit nach auf diversen Endgeräten im lokalen Netzwerk nutzen wirst. Öffne dafür die Systemsteuerung und klicke im Bereich „Anwendungen“ auf „DLNA Medienserver“. Setze einen Haken bei „DLNA-Medienserver aktivieren“, vergib einen Namen für deinen Server und klicke unten auf den Übernehmen-Button. Jetzt ist dein NAS beispielsweise für deinen TV oder deine Konsole sichtbar.
Multimedia Console konfigurieren und Videos hinzufügen
Sind alle Vorkehrungen getroffen, kannst du mit dem eigentlichen Einrichten deines Medienservers sowie der Transkodierung beginnen. Rufe über das Menü die Multimedia Console auf und wechsle dort zuerst in den Reiter „Transcoding“. Öffne die „Settings“ und stelle sicher, dass dem „GPU-accelerated transcoding“ ein „Enable“ folgt. Ansonsten klicke auf den Button „GPU Management“, um erneut zu den Einstellungen für deine GPU zu gelangen.
Im Einstellungsbereich der Multimedia Console kannst du außerdem die maximale CPU-Leistung festlegen. Das ergibt durchaus Sinn, denn die Grafikkarte übernimmt nur das Encoding. Zur Decodierung wird immer der Prozessor verwendet. Schiebe den Regler nicht auf Anschlag, sondern lasse ein paar Ressourcen für das NAS übrig. Ein Wert von etwa 80 % sollte in der Regel völlig ausreichen. Zudem hast du an dieser Stelle die Möglichkeit, Untertitel direkt in den transkodierten Stream einzubetten. Oftmals löst diese Einstellung zahlreiche Probleme mit falsch oder gar nicht angezeigten Untertiteln auf diversen Endgeräten. Speichere deine Einstellungen mit dem Apply-Button.
Was wäre eine Medienbibliothek ohne Inhalte? Stimmt, leer. Deshalb geht es jetzt darum, deine Film- und Seriensammlung sowohl für die Video Station als auch für den DLNA-Server verfügbar zu machen. Klicke in der Multimedia Console in den Reiter „Content Management“ und wähle dort zuerst die Video Station aus.
Per Edit-Button erscheint die Verzeichnisstruktur deines NAS. Hier kannst du einen oder mehrere Ordner auswählen, in denen sich die entsprechenden Medien befinden. Bestätige deine Auswahl mit „Apply“ und stelle außerdem sicher, dass dein Benutzeraccount darauf zugreifen kann. Wiederhole diesen Vorgang für den Bereich „DLNA“. Natürlich kannst du hier auch unterschiedliche Inhalte anbieten.
Dateien manuell transkodieren
Wenn du bereits weißt, welche Formate du für deine verschiedenen Abspielgeräte benötigst, kannst du mit Hilfe der Video Station beispielsweise deine gesamte Filmsammlung in die gewünschten Formate konvertieren, sodass beim Abspielen dann keine große Rechenleistung mehr benötigt wird. Dadurch kannst du etwa die Files umwandeln und danach die GPU wieder ausbauen sowie die Gehäuseabdeckung montieren.
Beginne für die manuelle Transkodierung in der Video Station. Markiere die Videos, die du umwandeln möchtest, rechtsklicke auf eines und wähle „Video transkodieren“.
Im folgenden Dialogfenster kannst du nun die Tonspur (Soundtrack), die gewünschte Auflösung sowie die Untertitel festlegen. Es lassen sich sogar mehrere Auflösungen gleichzeitig aktivieren, sodass du beispielsweise für TV und Smartphone gleich das passende Endformat erhältst. Als praktisches Extra lässt sich das Video an dieser Stelle sogar drehen. Bestätige deine Einstellungen mit dem Button „Transkodierung“.
Anschließend erhältst du in der Multimedia Console im Bereich „Transcoding“ einen Überblick über den aktuellen Status. Achte aber darauf, dass du stets ausreichend Speicherplatz zur Verfügung hast, denn jede Variante des Originals belegt ebenso, wenn auch weniger Platz auf deinem NAS.
Automatische Transkodierung nutzen
Kurz gesagt, für den automatischen Modus musst du nichts weiter machen, als entweder per DLNA oder über die Android- und iOS-App „Qvideo“ zu streamen. Beide Methoden fordern bei der Wiedergabe das entsprechende Format an, sodass du dich um nichts Weiteres kümmern musst. Möchtest du hingegen die Auflösung ändern, etwa, weil du mit einer mobilen Datenverbindung unterwegs bist und dein Kontingent nicht gleich aufbrauchen möchtest, kannst du das selbstverständlich auch direkt in der App erledigen.
Tippe im rechten unteren Bereich auf das Filmstreifen-Icon mit dem Zahnrad, wähle anschließend „Auflösung“ und selektiere das Format deiner Wahl. Bestätige mit „OK“ und dein Video wird automatisch im Hintergrund von deiner GPU im NAS auf das gewünschte Format heruntergerechnet.
Mehr gleichzeitige Streams erlauben
Schonmal von der Nvidia Quadro-Reihe gehört und über die Preise dieser Grafikkarten gestaunt? Die Profi-GPUs haben nämlich einen entscheidenden Vorteil bei allerhand Rechenaufgaben und können unter anderem eine unlimitierte Anzahl gleichzeitiger Streams kodieren. Die Consumer-Produkte sind nämlich auf maximal 3 gleichzeitige Transcoding-Sessions limitiert, obwohl die Rechenleistung für mehr durchaus vorhanden wäre. Doch auch hier gibt es wie immer einen kleinen Workaround für den Fall, dass du mehr aus deiner GPU herausholen und nicht das fünffache für eine Quadro hinblättern möchtest. Du benötigst dafür lediglich einen SSH-Client und ein Skript von GitHub.
SSH-Client installieren und Verbindung zum NAS herstellen
Lade dir zuerst den SSH-Client herunter, wie zum Beispiel PuTTY. Wähle im Bereich „Package Files“ die 64-Bit-x86-Version „putty-64bit-0.76-installer.msi“ und installiere diese.
Jetzt musst du noch den SSH-Zugang deiner QNAP öffnen. Rufe die Systemsteuerung in deinem Webinterface auf und klicke im Bereich „Netzwerk und Dateidienste“ auf „Telnet / SSH“. Aktiviere anschließend den Punkt „SSH-Verbindung zulassen (Nur Administratoren können sich aus der Ferne anmelden.) und bestätige das mit dem Übernehmen-Button.
Du öffnest hiermit eine kleine Sicherheitslücke auf deinem NAS, da über eine SSH-Verbindung alle erdenklichen Systemeinstellungen geändert werden können. Da Port 22 aber ohnehin in keinem Fall auf deinem Router geöffnet sein sollte (und du kannst das ja gegebenenfalls noch mal nachprüfen), betrifft die Einstellung nur den Zugriff aus dem LAN. Nach Ausführen des Skriptes kannst du die Funktion außerdem wieder deaktivieren.
Öffne PuTTY und gib im Feld „Host Name (or IP address)“ die IP-Adresse deines NAS sowie den Port an, falls du diesen nicht bei 22 belassen hast. Klicke anschließend auf „Open“, um eine Verbindung herzustellen.
Sollte ein „PuTTY Security Alert“ aufpoppen, kannst du diesen getrost mit „Accept“ bestätigen – hier geht es nur darum, dass die Verbindung PuTTY noch nicht bekannt ist und deshalb noch kein RSA-Schlüssel existiert. Nun sollte die sogenannte Shell erscheinen und dich nach deinen Logindaten fragen. Melde dich hier mit deinem Administrator-Account sowie dem dazugehörenden Kennwort an. Bestätige jeweils mit der Eingabetaste.
Zuerst landest du in einem textbasierten QNAP-Menü, welches du mit „Q“ gefolgt von der Eingabetaste beenden kannst. Bestätige nochmals mit „Y“ und der Eingabetaste. Willkommen auf der Konsole.
Modifizierungs-Skript herunterladen und ausführen
Sobald du in der Konsole angekommen bist, landest du automatisch im Stammordner des Administrators. Da die Systempartition aber eher unangetastet bleiben sollte, ist es sinnvoll, auf einen anderen Ordner auszuweichen. Nutze deshalb entweder ein bereits vorhandenes Verzeichnis oder erstelle über die File Station im Webinterface deines QNAP-NAS ein Neues.
Lade dir anschließend von GitHub den Nvidia-Patch herunter. Klicke auf der Webseite auf den Button „Code“ und wähle „Download ZIP“. Öffne die Datei und entpacke sie in dein vorhin erstelltes Verzeichnis, sodass du über das Konsolenfenster direkt darauf zugreifen kannst.
Rufe auf deinem Rechner als Nächstes das soeben entpackte Verzeichnis auf und öffne die Datei „patch.sh“ mit einem Texteditor deiner Wahl. Lösche den gesamten Inhalt (im Texteditor, nicht im Ordner!) und ersetze diesen mit jenem aus dem letzten Beitrag der Webseite aus dem QNAP-Forum. Nutze hier einfach „SELECT ALL“, füge das Skript in deinen Texteditor ein und speichere die Änderungen.
Ab hier geht es wieder per SSH-Konsole weiter. Wechsle mit folgenden Befehlen in deinen Ordner und bestätige die einzelnen Kommandos jeweils mit der Eingabetaste:
cd .. (wechselt aus dem Standard-Home-Ordner ein Verzeichnis tiefer)
cd share (wechselt zu den freigegebenen Ordnern)
cd DEINfreigegebenerORDNER (wechselt zu deinem vorhin erstellten Ordner – den Namen musst du selbstredend dementsprechend anpassen, achte außerdem auf Groß-Kleinschreibung)
cd nvidia-patch-master (wechselt in das Verzeichnis, das du aus dem ZIP-File entpackt hast)
bash patch.sh (führt das Installationsskript für den modifizierten Treiber aus)
Ab jetzt sollte die Beschränkung für deine Grafikkarte aufgehoben sein und dir eine unlimitierte Anzahl gleichzeitiger Transkodierungen zur Verfügung stehen. Nachprüfen kannst du das entweder, indem du alle deine Freunde mit ihren Smartphones zum Testen einlädst oder über die beiden folgenden Befehle:
cd /opt/NVIDIA_GPU_DRV/usr/bin
LD_PRELOAD=/share/CACHEDEV1_DATA/.qpkg/NVIDIA_GPU_DRV/usr/lib/libnvidia-ml.so ./nvidia-smi
Wird in diesem Diagnosefenster eine Versionsnummer bei „NVIDIA-SMI“ angezeigt, ist der Workaround aktiv.
Gegenüberstellung CPU / GPU
Während die Transkodiergeschwindigkeit sowie die Anzahl der möglichen gleichzeitigen Sessions der GPU einen großen Pluspunkt zuschreiben, entstehen dadurch auch einige Nachteile. Der Größte davon ist die im Vergleich zum CPU-Encoding geringere Bildqualität. GPUs bedienen sich nämlich des sogenannten Macroblockings. Dabei wird bei der Transkodierung das Bild in viele kleine Quadrate aufgeteilt und anschließend analysiert. Nur die Blöcke, die sich bewegen, werden anschließend weiter beachtet und umgewandelt. Es ist demnach nicht notwendig, dass das gesamte Bild neu berechnet wird, sondern nur jene Bereiche, die sich zwischen den Einzelbildern ändern. Das kann zur Folge haben, dass bei Actionszenen häufig Artefakte zu sehen sind oder die Bildqualität abnimmt.
Die CPU hingegen ist langsamer, dafür aber auch gründlicher. Sie berechnet jedes Einzelbild neu und bringt es auf die gewünschte Größe – natürlich zulasten der Geschwindigkeit. Nutzen jedoch nur eine Handvoll User deinen Streaming-Server, kannst du die Performance auch erst einmal im Blick behalten und erst bei Leistungsengpässen eine Aufrüstung in Betracht ziehen. Möglicherweise kannst du eine GPU-Lösung gar nicht auslasten. Und du sparst dir auch noch den relativ aufwendigen Umbau.
Fazit
Mediendateien auf einem QNAP-NAS per Grafikkarte zu transkodieren ist nicht unbedingt einfach zu bewerkstelligen. Zudem sind einige Hardwarekomponenten erforderlich, die das gesamte Vorhaben kostspielig machen können. Die möglicherweise fehlende Gehäuseabdeckung und das externe Netzteil sind außerdem nicht gerade eine Bereicherung für das ansonsten ästhetische Wohnzimmer oder das gepflegte, minimalistische Homeoffice. So viel zu den negativen Aspekten.
Hast du jedoch vor, möglichst viele User gleichzeitig mit deiner Mediensammlung zu bedienen, ist GPU-Encoding die einzig sinnvolle Lösung. Selbst ein kleines NAS schafft mit der entsprechenden Grafikkarte mühelos eine zweistellige Zahl gleichzeitiger Transkodierungen. Und oftmals liegt ausgemusterte Hardware ohnehin irgendwo herum und wartet nur darauf, wieder sinnvoll eingesetzt zu werden.