Wie Streaming für mehrere Benutzer den Transcoding-Workflow von Jellyfin verändert

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Multi-User-Streaming verwandelt Jellyfin von einem einzelnen Wiedergabepfad in eine gemeinsame Warteschlange, deren Engpass von der Kompatibilität und Bitrate jedes Clients abhängt.

In einem Haushalt können innerhalb weniger Minuten ein Fernseher-Stream mit direkter Wiedergabe, eine Tablet-Sitzung mit Untertiteln und eine Remote-Sitzung auf dem Smartphone gestartet werden. Diese Anfragen verbrauchen nicht dieselben Ressourcen: Eine liest möglicherweise nur Daten aus dem Speicher, eine andere muss Untertitel während einer Videotranskodierung einbrennen, und der Remote-Client kann zusätzlich die Upload-Kapazität begrenzen. Diese ungleichmäßige Auslastung zu verstehen ist aussagekräftiger, als nur die Anzahl der Benutzer zu zählen.

Eine Benutzeranfrage kann vier verschiedene Pfade nehmen

Jellyfin vergleicht zunächst Mediencontainer, Videocodec, Audiocodec, Untertitel, Auflösung und Bitrate mit den Angaben des anfragenden Clients zu dessen unterstützten Formaten. Dieser Vergleich bestimmt, ob Direct Play, Remuxing, Audiokonvertierung oder eine vollständige Videotranskodierung verwendet wird. Daher können zwei Benutzer, die denselben Titel öffnen, sehr unterschiedliche Serverarbeit erzeugen.

Ein Client, der die Originaldatei akzeptiert, macht den Server größtenteils zu einem Dateileser, während ein inkompatibler Browser möglicherweise Dekodierungs- und Kodierungsstufen erfordert. Eine praktische Erklärung des Verhaltens von Direct Play zeigt, warum das Vermeiden von Konvertierungen erhebliche Rechenarbeit aus dem Pfad entfernt.

Das sichtbare Ergebnis ist eine asymmetrische Auslastung: Die Anzahl der Streams kann steigen, ohne dass die CPU-Auslastung entsprechend zunimmt, bis eine Anfrage eine Kompatibilitätsgrenze überschreitet. Die richtige Einheit sind daher nicht „Benutzer“, sondern die Mischung aus Sitzungen mit direkter Wiedergabe, Remuxing, Audiotranskodierung und Videotranskodierung.

Gleichzeitige Transkodierungen konkurrieren an bestimmten Pipeline-Stufen

Eine vollständige Transkodierung ist eine Kette aus Lesen, Dekodieren, Filtern, Kodieren, Schreiben temporärer Segmente und Ausliefern. Gleichzeitigkeit wird dann relevant, wenn mehrere Sitzungen dieselbe knappe Stufe benötigen, etwa eine Hardware-Videoeinheit, eine CPU-basierte Untertitelwiedergabe, einen Transkodierungs-Cache oder eine ausgehende Netzwerkverbindung.

Hardwarebeschleunigung kann Dekodierungs- und Kodierungsarbeit von den allgemeinen CPU-Kernen verlagern, beseitigt jedoch nicht die Kosten für Filter, Untertitel, Speicher oder Netzwerk. Praxisberichte über hardwarebeschleunigte Transkodierung unterscheiden daher konsequent zwischen GPU-Auslagerung und einer vollständig kostenlosen Pipeline.

Sobald die langsamste gemeinsam genutzte Stufe Medien nicht schneller bereitstellen kann, als sie während der Wiedergabe verbraucht werden, wachsen die Warteschlangen und die Clients leeren ihre Puffer. Eine schnellere Komponente an anderer Stelle kann das nicht ausgleichen: Freie CPU-Kapazität behebt keinen ausgelasteten Upload, und zusätzliche Bandbreite behebt kein softwarebasiertes Einbrennen von Untertiteln.

Open-Source-Kontrolle verändert die Kapazitätsplanung

Jellyfin macht die Wiedergabeentscheidung sichtbar und verwendet eine auf FFmpeg basierende Konvertierung, ohne Hardwarebeschleunigung hinter eine Abonnementstufe zu sperren. Dadurch lässt sich der Ablauf untersuchen und konfigurieren, zugleich ist der Betreiber dafür verantwortlich, Treiber, Gerätezugriff, Codecs und Clientverhalten aufeinander abzustimmen.

Der Wert dieser Kontrolle zeigt sich, wenn ein Heimserver mehrere Anwendungen ausführt und der Besitzer entscheiden kann, welche Workloads sich die GPU teilen oder wann Hintergrundaufgaben ausgeführt werden. Die Pipeline auf Grundlage von Client-Limits bildet die Grundlage für eine einzelne Sitzung; bei mehreren Benutzern kommt die Konkurrenz zwischen diesen Pipelines hinzu. Dieselbe Betriebsgrenze gilt auch für das Verhalten von Direct Play, wenn der vollständige Auslieferungspfad berücksichtigt wird.

Open Source verändert also, wer das System optimieren kann, nicht die physischen Kosten der Konvertierung. Mehr Einstellungsmöglichkeiten erzeugen nicht automatisch mehr Durchsatz, und ein fehlerhafter Beschleunigungspfad kann unbemerkt auf CPU-Arbeit zurückfallen, während die Oberfläche weiterhin verfügbar wirkt.

-15% OFF

Wo die Benutzerzahl keine Leistung mehr vorhersagt

Die Benutzerzahl ist ein schwacher Indikator, wenn die meisten Clients Direct Play verwenden; zwei anspruchsvolle HDR-Sitzungen mit Untertiteln können mehr kosten als viele kompatible 1080p-Sitzungen. Die Aussage verliert außerdem ihre Gültigkeit, wenn Speicher oder Upload bereits ausgelastet sind, weil die Transkodierungskapazität dann nicht mehr die bestimmende Variable ist.

Die Anzahl gleichzeitiger Remote-Sitzungen muss anhand der tatsächlich nutzbaren Upload-Kapazität und nicht anhand der beworbenen Download-Geschwindigkeit geprüft werden. Ein Beispiel zur Bandbreitenplanung auf Grundlage von Upload geteilt durch Stream-Bitrate macht den begrenzenden Zusammenhang deutlich, wobei schwankende Quellbitraten weiterhin Reserven erfordern. Ein separater Praxisbericht spricht ebenfalls dafür, Transkodierungsindikatoren auf Sitzungsebene zu verwenden, anstatt anzunehmen, dass das sichtbare Symptom den Engpass eindeutig identifiziert.

Führe vor einer Hardwareänderung ein vierzeiliges Sitzungsprotokoll: Notiere für jeden gleichzeitig aktiven Client den Wiedergabemodus, die Quell- und die ausgelieferte Bitrate, die Untertitelmethode sowie die aktive CPU- oder GPU-Einheit. Führe ein Upgrade nur durch, wenn wiederholte Tests dieselbe ausgelastete Stufe identifizieren. Ändere andernfalls zuerst den inkompatiblen Client, die Medienversion oder das angestrebte Bandbreitenziel.

Tech- & KI-Zentrum

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.