Gemenskapslösning

Så åtgärdar du hög CPU-användning vid 4K-transkodning i Jellyfin på ZimaOS

An Intel N100 Jellyfin case where enabling hardware acceleration made one 4K transcode playable, but CPU usage remained at 95–98% and iGPU use was not conclusively verified.

En ZimaOS-användare som körde Jellyfin på ett Intel N100-system med 16 GB RAM rapporterade en tydlig skillnad i uppspelningsbeteendet: media upp till 1080p fungerade normalt, men en 4K-ström som krävde transkodning drev processoranvändningen till 100 % och blev för hackig för att kunna ses. Jellyfin kördes med Host-nätverk och servern hade inget dedikerat grafikkort.

Communitydiskussionen ledde inte till en enda bekräftad slutgiltig lösning. I stället utvecklades den till en praktisk undersökning av mjukvarutranskodning, Intels integrerade grafik, VA-API, kodekkompatibilitet, HDR-tonmappning och var man bör kontrollera att en aktiv transkodning pågår. Den ursprungliga användaren aktiverade så småningom hårdvaruacceleration och kunde spela upp en transkodad ström, även om processoranvändningen fortfarande låg runt 95–98 %.

Det ursprungliga problemet med Jellyfins 4K-transkodning

Servern använde en Intel N100-processor och 16 GB minne. Jellyfin fungerade som lokal medieserver och nätverkstypen för Docker var inställd på Host. Vanlig uppspelning i 1080p var inget problem.

Problemet uppstod endast när en 4K-fil behövde transkoderas. Då steg processoranvändningen till 100 %, uppspelningen hackade och strömmen blev i praktiken omöjlig att titta på. Användaren ville därför veta vilka Jellyfin-inställningar som kunde förbättra transkodningsprestandan utan ett dedikerat grafikkort.

Denna skillnad mellan 1080p och 4K blev den centrala ledtråden i svaren. Communitymedlemmarna fokuserade mindre på nätverk och minne och mer på vad Jellyfin konverterade, om N100-processorns integrerade grafik användes och om den valda klienten kunde spela upp källformatet direkt.

Varför kodek- och klientkompatibilitet kom in i diskussionen

goultron beskrev 4K-transkodning på ett system i N100-klassen som en krävande belastning, särskilt när servern faller tillbaka på processorn. Deras egen strategi var att undvika att underhålla ett 4K-bibliotek och föredra H.264-media, eftersom det kan spelas upp direkt på ett större antal enheter.

Svaret lyfte också fram en viktig praktisk punkt: även en H.264-video kan fortfarande kräva någon form av konvertering. Den mottagande enheten, de ljudformat den stöder och den tillgängliga nätverkshastigheten kan alla påverka den slutliga uppspelningsvägen. goultron misstänkte att ljudkonvertering låg bakom vissa strömmar som fortfarande transkodades trots att de använde H.264-video.

De jämförde detta med mycket av det tillgängliga 4K-innehållet, som vanligtvis använder H.265/HEVC. Vissa mindre uppspelningsenheter och tv-apparater kan inte hantera alla H.265-profiler direkt. I sådana fall måste Jellyfin konvertera källan för klienten, vilket åter lägger belastningen på servern.

gelbuildings huvuddiagnos: Kontrollera N100:s iGPU först

gelbuilding ansåg att N100:s beteende var förväntat om Jellyfin utförde 4K-omkodning i programvara. Förklaringen var enkel: en liten processor kan belastas till full kapacitet av denna arbetsbelastning, vilket förklarar användarens ursprungliga problem med smidig 1080p-uppspelning men obrukbar 4K-omkodning.

Det första föreslagna testet var att kontrollera om Jellyfin faktiskt använde den Intel-medieenhet som är inbyggd i N100. N100 behöver inget separat grafikkort för att exponera en iGPU, men Jellyfin måste ha hårdvaruacceleration aktiverad och kunna komma åt enheten från sin container.

Sökvägen till inställningarna som angavs i svaret var:

  1. Öppna Jellyfins administrationsgränssnitt.
  2. Öppna Playback.
  3. Öppna Transcoding.
  4. Aktivera hårdvaruacceleration.
  5. Välj VA-API för konfigurationen som diskuteras i tråden.

Det förväntade resultatet var att arbetet skulle flyttas från programvarubearbetning på processorn till Intels iGPU. gelbuilding varnade också för att man inte kunde förvänta sig att N100:s iGPU skulle konvertera alla 4K-källor utan problem. De identifierade specifikt vissa HEVC-filer med hög bithastighet som arbetsbelastningar där systemet fortfarande kunde falla tillbaka på programvarubearbetning.

Communityn korrigerade var VA-API skulle kontrolleras

Det första svaret föreslog att man skulle kontrollera Dashboard → Activity efter en VA-API-etikett för H.264 eller HEVC. goultron testade rådet i Jellyfin 10.10.7 och upptäckte att Activity-sidan endast visade händelser som VideoPlayback och VideoPlaybackStopped.

gelbuilding korrigerade sedan instruktionen. Activity-sidan förväntades inte visa om omkodningen använde VA-API eller programvara. Den relevanta informationen skulle kontrolleras medan 4K-strömmen aktivt omkodas under:

  1. Instrumentpanel
  2. Uppspelning
  3. Omkodning

Den aktiva sessionen bör visa en rad under kodeken. En VA-API-etikett visar att hårdvaruacceleration används, medan en Software-etikett visar att processorn utför konverteringen. Om omkodningsområdet är tomt kan filen spelas upp direkt eller strömmas direkt, vilket innebär att ingen aktiv videoomkodning pågår.

Varför btop inte gav tråden ett tydligt svar

goultron försökte också verifiera iGPU-aktiviteten via btop. Intels iGPU syntes inte tydligt i GPU-området, trots att samma iGPU redan hade skickats vidare till Frigate utan problem och Frigate visade att den använde enheten.

gelbuilding svarade att btop i den här ZimaOS-kontexten främst visade dedikerade GPU:er och därför kanske inte visade Intels integrerade grafikprocessor även när den var aktiv. Därför rekommenderade de att Jellyfins aktiva vy för omkodning skulle betraktas som den direkta bekräftelsemetoden.

Zima-Jerry tillade senare att btop kunde användas för att övervaka GPU-användningen. Dessa två påståenden försonades inte innan diskussionen avslutades. Communitytråden stöder därför användning av btop som ett kompletterande observationsverktyg, men inte som det enda beviset; den aktiva informationen om Jellyfins omkodning behövs fortfarande för att identifiera VA-API-bearbetning jämfört med programvarubearbetning.

Zima-Jerrys konfiguration för HDR-tonmappning

Zima-Jerry länkade till ytterligare en konfiguration från communityn med fokus på hårdvaruacceleration och HDR-tonmappning i Jellyfin på Intel N100. I det tidigare fallet rapporterades den Jellyfin-version som då fanns tillgänglig i App Store ha problem med färgtonskonverteringen.

Det föreslagna alternativet var nyanmisakas Jellyfin-containeravbildning tillsammans med en anpassad YAML-konfiguration. Detta var en lösning från communityn som var kopplad till de Jellyfin- och ZimaOS-versioner som användes vid den tidpunkten, så den bör jämföras med den aktuella versionen i App Store innan en befintlig installation ersätts.

Inställningar för hårdvaruacceleration och omkodning i Jellyfin, delade för ett Intel N100-system
Skärmbild från communityn: Jellyfins omkodningskonfiguration som delades av Zima-Jerry.
Ytterligare alternativ för HDR-tonmappning och hårdvaruacceleration i Jellyfin, delade av Zima-Jerry
Skärmbild från communityn: ytterligare alternativ för hårdvaruacceleration och HDR-tonmappning.

Resultatet som delades i det relaterade inlägget innebar inte obegränsad 4K-omkodning. Zima-Jerry uppskattade att den integrerade grafiken i N100 kunde konvertera Dolby Vision-video smidigt i cirka 4K 30 fps eller lägre med den testade konfigurationen.

Jellyfin-uppspelningsresultat efter att communityns konfiguration för hårdvaruomkodning på Intel N100 hade tillämpats
Skärmbild från communityn: uppspelningsresultatet efter att den anpassade konfigurationen hade tillämpats.

Vad som ändrades efter att den ursprungliga användaren aktiverade hårdvaruacceleration

Efter att ha gått igenom svaren aktiverade Heimwerkerking hårdvaruacceleration för omkodning. Detta gav en tydlig förbättring: minst en omkodad ström blev spelbar.

Den aktiva uppspelningsinformationen som visades i kontrollpanelen var 48,7 Mbps MP4 H264 AAC. CPU-användningen låg dock kvar på mellan 95 och 98 %, så användaren var fortfarande osäker på om Intels integrerade grafikprocessor faktiskt hanterade videokonverteringen.

Resultatet bevisade inte att problemet var helt löst. Det visade att konfigurationsändringen förbättrade uppspelningen, men tråden saknade fortfarande en bekräftad VA-API-etikett, ett fullständigt FFmpeg-resultat eller ett samstämmigt iGPU-värde. Det sista svaret föreslog återigen att GPU-användningen skulle övervakas med btop, och ingen senare bekräftelse publicerades.

Vad den här communitytråden faktiskt fastställer

Diskussionen stöder starkt att programvarubaserad 4K-trankodning är den första förklaringen till att en N100 når 100 % CPU-användning. Den fastställer också en korrigerad verifieringsväg: starta en 4K-trankodning och granska den aktiva sessionen under Jellyfins Playback- och Transcoding-område i stället för aktivitetshistoriken.

Svaren visar flera begränsningar beroende på arbetsbelastning. H.265-kompatibilitet hos klienten, ljudkonvertering, hög källbithastighet, HDR-tonmappning och den specifika Jellyfin-containern kan alla påverka resultatet. Aktivering av VA-API förbättrade den ursprungliga användarens möjlighet att spela upp en trankodad ström, men CPU-användningen förblev hög.

Tråden fastställer inget universellt antal strömmar för N100 och bevisar inte att ett Intel Arc-grafikkort krävs. gelbuilding presenterade två möjliga nästa steg för användare som fortfarande behöver stabil 4K-konvertering: sänk källans bithastighet eller lägg till ett mindre Intel Arc-grafikkort. Diskussionen avslutades innan något av alternativen testades av den ursprungliga skribenten.

Vanliga frågor från communitydiskussionen

Varför fungerade 1080p medan 4K-trankodningen hackade?

Communityn tillskrev skillnaden den betydligt tyngre programvarubelastning som uppstod när 4K-filen behövde konverteras. Den ursprungliga N100-processorn nådde full CPU-användning under den processen.

Var ska VA-API kontrolleras i Jellyfin?

Starta en 4K-ström som tvingar fram trankodning och granska sedan den aktiva sessionen under Dashboard, Playback och Transcoding. Händelsehistoriken under Activity visade sig inte ge den nödvändiga VA-API- eller Software-etiketten.

Vad innebär en tom vy över aktiva trankodningar?

Enligt gelbuildings rättelse kan det betyda att filen Direct Plays eller Direct Streams och att ingen videotranskodning är aktiv för närvarande.

Löste aktivering av hårdvaruacceleration problemet helt?

Nej. Det gjorde en trankodad ström spelbar, men den rapporterade CPU-belastningen låg fortfarande på 95–98 %, och tråden avslutades utan någon slutlig bekräftelse på att iGPU:n hanterade hela processen.

Vilka alternativ föreslog communityn om 4K fortfarande var instabilt?

Svaren föreslog att man i möjligaste mån skulle föredra kompatibla H.264-mediefiler, sänka bithastigheten för 4K-källan, testa den anpassade Jellyfin-konfiguration som Zima-Jerry delat eller lägga till ett mindre Intel Arc-grafikkort för en kraftfullare väg med hårdvarutranskodning.