Wyszukiwanie w witrynie

To jest ustawienie Dockera, które użytkownicy Plex zawsze źle konfigurują


Sprzętowe transkodowanie jest jedną z moich ulubionych funkcji mojego serwera multimedialnego, który działa na Plex. Pozwala mi to mieć jedną kopię filmu i następnie po prostu transkodować ją do dowolnego kontenera lub formatu, jakiego potrzebuje. Jednak zajęło mi trochę czasu, aby poprawnie uruchomić to w Dockerze.

Transkodowanie sprzętowe to to, co sprawia, że serwery Plex są potężne

Chociaż do korzystania z najpotężniejszych silników transkodujących twojego sprzętu potrzebny jest Plex Pass

Jeśli planujesz uruchomić standardowy serwer Plex bez transkodowania (lub tylko z transkodowaniem na procesorze), to jest to konfiguracja trudna do zepsucia. Jednak jeśli chcesz wykorzystać sprzętowe transkodowanie, sprawy stają się nieco bardziej skomplikowane.

Transkodowanie sprzętowe to sekret każdego serwera multimediów — ale do jego używania wymagana jest aktywna subskrypcja Plex Pass. To ono pozwala na posiadanie filmu w jakości 1080p i zmniejszenie go do 720p przy złym połączeniu sieciowym. Albo posiadanie kopii filmu w 4K HDR i strumieniowe przesyłanie go na telewizor 1080p, a nawet na telefon, będąc poza domem.

Dzięki sprzętowemu transkodowaniu Plex może korzystać z natywnych silników multimedialnych dowolnego procesora lub karty graficznej w twoim systemie, zamiast zmuszać tylko procesor do brutalnego przetwarzania transkodowania.

Pomyśl o zwykłych rdzeniach CPU w swoim procesorze jak o nożu do masła. Bardzo wszechstronne, ale mogą być powolne przy wykonywaniu precyzyjnych zadań. Silniki kodowania multimediów w Twoim CPU lub GPU są jak nóż do filetowania — precyzyjne i dokładne, ale naprawdę przydatne tylko do kilku rzeczy.

Tak więc skonfigurowanie serwera Plex do korzystania z funkcji transkodowania sprzętowego w twoim systemie jest kluczowe dla prawidłowej konfiguracji Plex.

Przekazanie GPU do Dockera to miejsce, w którym większość konfiguracji Plex się psuje

Jeśli urządzenie nie jest poprawnie zmapowane, Plex nie może używać sprzętowego transkodowania

Przekazywanie GPU do Plex w Dockerze jest albo bardzo proste, albo zaskakująco frustrujące, w zależności od Twojej konfiguracji. Mój pierwotny serwer Plex był stosunkowo łatwy do obsługi, miałem GPU dedykowane Plexowi, więc mogłem je przekazać do Dockera i działało to całkiem dobrze.

Następnie przeniosłem się na system działający na Proxmox i chciałem używać iGPU do Plex. Było to dość trudne do ustawienia, ponieważ musiałem przekazać iGPU z systemu hosta (Proxmox) do maszyny wirtualnej (Ubuntu), a następnie do kontenera Docker. Teraz uruchamiam Plex na moim NAS, który ma iGPU, którego używam do Plex, a konfiguracja tam była bardzo prosta i łatwa.

Nie ma sposobu, abym mógł omówić wszystkie potencjalne konfiguracje tutaj, ale to, co zrobię, to powiem ci, co zrobić, gdy tylko iGPU lub karta graficzna będą widoczne przez Dockera — niezależnie od tego, czy jest to wewnątrz maszyny wirtualnej, czy po prostu na twoim systemie hosta.

Jeśli korzystasz z GPU NVIDIA, używanie go w Plex jest całkiem proste. Upewnij się tylko, że Docker ma do niego dostęp (zwykle przez NVIDIA Container Toolkit), i dodaj następujące dwa wiersze do swoich zmiennych środowiskowych:

     environment:
          - NVIDIA_VISIBLE_DEVICES=all
          - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility

Użycie urządzenia Intela jako karty graficznej wymaga kilku dodatkowych linijek, ale wciąż jest dość proste do wykonania:

   environment:
      - LIBVA_DRIVER_NAME=iHD
      - VAAPI_DEVICE=/dev/dri/renderD128
      - PLEX_HWTRANSCODE=1

    devices:
      - /dev/dri/card0:/dev/dri/card0
      - /dev/dri/renderD128:/dev/dri/renderD128

Oczywiście, musisz zintegrować te linie z innymi zmiennymi środowiskowymi lub urządzeniami, które masz zamontowane w Plex, i upewnić się, że twoje wolumeny są prawidłowo zamontowane. Ale naprawdę, wszystko, co jest potrzebne, aby używać GPU NVIDIA lub iGPU Intel, to powyższe zmienne.

W zależności od tego, na jakim hoście uruchamiasz swoje środowisko Docker, możesz w ogóle nie musieć wprowadzać ręcznych edycji. Na przykład mój NAS Ugreen ma przełącznik podczas tworzenia nowego kontenera Docker, który automatycznie obsługuje przekazywanie GPU i działa to dobrze. Inne systemy oferują podobną funkcjonalność, jeśli poszukasz, ale czasami nadal musisz ustawić zmienne środowiskowe specyficzne dla uruchamianego kontenera.

Zawsze sprawdzaj, czy Plex faktycznie wykrywa twoją kartę graficzną

Dowód tkwi w budyniu

Przekazywanie urządzenia do transkodowania do Plex jest świetne, ale to nie oznacza, że Plex faktycznie go używa. Kiedy przekazywałem mój iGPU do VM dla Plex, zajęło kilka prób, aby Plex poprawnie go wykrył i użył. Dlatego za każdym razem, gdy ustawiam nowy serwer Plex z transkodowaniem sprzętowym, zawsze sprawdzam, czy działa, zanim uznam zadanie za zakończone.

Całkowicie możliwe jest rozpoczęcie transmisji i szukanie (hw) podczas transkodowania, ale zazwyczaj idę do Ustawienia → Transcoder → Urządzenie do transkodowania sprzętowego. Powinno to pokazać konkretne urządzenie, które posiadasz do transkodowania, ale jeśli jest puste lub mówi „Auto” bez niczego innego w rozwijanym menu, istnieje duża szansa, że twój passthrough nie działa prawidłowo.

Zazwyczaj zaczynam od weryfikacji ustawień transkodowania, ale potem zawsze lubię podwójnie sprawdzić, wykonując strumień transkodowany i szukając na nim tagu (hw), aby upewnić się, że transkodowanie odbywa się prawidłowo przy użyciu dedykowanego sprzętu.


Jeśli nie uda ci się uruchomić sprzętowego transkodowania, to twój procesor przejmuje całą odpowiedzialność za transkodowanie

Transkodowanie sprzętowe może wydawać się błahą sprawą, o którą warto się martwić, ale może ono zabierać cenne zasoby procesora na inne zadania.

Jeśli masz mocny system działający z Plex, możesz nie zauważyć, że na CPU odbywa się transkodowanie. Ale jeśli masz urządzenie o niższej mocy, takie jak mini PC Intel N95 lub N100, wtedy transkodowanie na CPU może przytłoczyć system, spowalniając w tym procesie wszystko inne.

Upewnij się więc, że Twój serwer Plex prawidłowo obsługuje sprzętowe transkodowanie. Twój procesor będzie Ci wdzięczny.

Powiązane artykuły