Jak Jellyfin przekształca ograniczenia klienta w potok transkodowania

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Jellyfin buduje ścieżkę odtwarzania na podstawie różnicy między tym, co zawiera materiał, a tym, co może zaakceptować klient wysyłający żądanie.

Ta różnica może być na tyle mała, że wystarczy remuksowanie kontenera, ograniczać się do konwersji dźwięku albo być na tyle duża, że konieczne staną się dekodowanie wideo, filtrowanie, mapowanie tonów, nakładanie napisów i ponowne kodowanie. Zrozumienie tej ścieżki wyjaśnia, dlaczego „ten sam plik” nie oznacza jednego stałego obciążenia serwera. Rejestruj decyzję dotyczącą odtwarzania dla każdego klienta, aby planowanie wydajności uwzględniało etapy faktycznie uruchamiane przez Jellyfin, a nie ogólną etykietę transkodowania.

Direct Play to punkt odniesienia bez konwersji

Gdy klient akceptuje kontener źródłowy oraz ścieżki wideo, dźwięku i napisów, serwer głównie odczytuje i dostarcza plik. Ten punkt odniesienia pozwala oddzielić dostarczanie multimediów od wydajności konwersji.

Obsługa dźwięku po stronie klienta może zmienić sposób odtwarzania bez zmiany pliku multimedialnego; bezpośrednie wyjście E-AC3 w Android TV nie zadziałało w przypadku, w którym lokalne dekodowanie PCM zachowało tryb Direct Play.

Ustal jednego klienta i jeden plik, dla których Direct Play działa niezawodnie. Wykorzystaj ten przebieg jako próbę kontrolną przed porównywaniem wykresów użycia procesora, GPU lub sieci z dowolnym przypadkiem transkodowania.

Niewielka różnica kompatybilności może wymagać tylko remuksowania lub obróbki dźwięku

Niewspierany kontener lub format dźwięku nie oznacza automatycznie konieczności konwersji wideo. Zachowanie strumienia wideo bez zmian może utrzymać obciążenie serwera znacznie poniżej poziomu pełnego transkodowania.

Wideo może pozostać nietknięte, podczas gdy zmieni się obsługa dźwięku lub kontenera w ramach ścieżki zgodności z klientem.

Przed uznaniem każdej sesji innej niż Direct Play za równoważną sprawdź w panelu powód konwersji oraz polecenie FFmpeg. W pomiarach rozróżniaj kopiowanie strumienia, konwersję dźwięku i kodowanie wideo.

Niezgodność wideo rozszerza potok przetwarzania

Gdy samo wideo musi zostać zmienione, Jellyfin może potrzebować dekodowania, filtrowania, skalowania, mapowania tonów, wypalania napisów i kodowania. W zależności od platformy i materiału niektóre etapy mogą działać sprzętowo, a inne pozostać na procesorze.

Wydajność w czasie rzeczywistym zmienia się zależnie od obciążenia kodeka i filtrów, dlatego sam model procesora nie wystarczy do przewidzenia wydajności transkodowania w Jellyfin.

Rejestruj aktywność GPU dla poszczególnych silników oraz użycie CPU dla dokładnie tego samego pliku. Ścieżkę strumieniowania z akceleracją sprzętową należy weryfikować etap po etapie, a nie wywnioskowywać jej na podstawie pojedynczego wskaźnika „GPU aktywne”.

Decyzja dotycząca odtwarzania jest również decyzją dotyczącą wydajności

Ustawienie klienta, wybór napisów lub limit przepustowości może skierować strumień na bardziej wymagającą ścieżkę, nawet gdy sprzęt serwera się nie zmienia. Oznacza to, że planowanie wydajności musi uwzględniać klientów i zasady, które wywołują konwersję.

Metoda USE pozwala powiązać diagnozę z zasobem, który osiąga nasycenie, zamiast zakładać, że transkoder zawsze jest ograniczony przez CPU.

Utwórz niewielką macierz reprezentatywnych klientów, materiałów, napisów i limitów dostępu zdalnego. Rejestruj wynikowy tryb odtwarzania, aby przyszłe regresje można było powiązać ze zmianą decyzji, zamiast zgadywać na podstawie objawów.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

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.