{"id":532,"date":"2026-10-06T19:40:00","date_gmt":"2026-10-06T17:40:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?page_id=532"},"modified":"2026-09-25T15:07:51","modified_gmt":"2026-09-25T13:07:51","slug":"lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/","title":{"rendered":"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105"},"content":{"rendered":"<h2>Przegl\u0105d architektury: Dekodowanie medi\u00f3w na platformie Raspberry Pi 5<\/h2>\n<p>Utrzymanie samodzielnie zarz\u0105dzanego serwera strumieniowania wideo na komputerze Raspberry Pi tradycyjnie wi\u0105za\u0142o si\u0119 z w\u0105skimi gard\u0142ami wydajno\u015bciowymi w sytuacjach wymagaj\u0105cych transkodowania w czasie rzeczywistym. Nieobs\u0142ugiwane kodeki, niekompatybilne \u015bcie\u017cki d\u017awi\u0119kowe lub ograniczenia przepustowo\u015bci sieci wymuszaj\u0105 na serwerze medi\u00f3w dekodowanie i ponowne kodowanie klatek wideo w locie. Na uniwersalnych rdzeniach procesora ARM programowe transkodowanie materia\u0142\u00f3w HEVC (H.265) lub 4K o wysokiej przep\u0142ywno\u015bci b\u0142yskawicznie wyczerpuje zasoby CPU, prowadz\u0105c do d\u0142awienia termicznego i zacinania odtwarzanego obrazu.<\/p>\n<p>Raspberry Pi 5 (wyposa\u017cony w uk\u0142ad SoC Broadcom BCM2712) dekoduje sprz\u0119towo wy\u0142\u0105cznie HEVC, a ten dekoder jest bezstanowy: obs\u0142uguje si\u0119 go przez V4L2 Request API, a nie przez stanowe dekodery V4L2-M2M, takie jak <code>hevc_v4l2m2m<\/code>. <strong>Jellyfin<\/strong> z niego nie korzysta: opcja \u201eVideo4Linux2\u201d u\u017cywa wy\u0142\u0105cznie koder\u00f3w V4L2, takich jak <code>h264_v4l2m2m<\/code>, a koder w Raspberry Pi 5 nie istnieje; projekt wycofa\u0142 ponadto obs\u0142ug\u0119 V4L2 dla Raspberry Pi. Uruchomiony w kontenerze na Raspberry Pi 5 Jellyfin dekoduje i koduje wi\u0119c programowo na czterech rdzeniach ARM Cortex-A76; niski pob\u00f3r mocy dotyczy Direct Play, a nie transkodowania.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-jellyfin-pl.png?v=20260925\" width=\"1120\" height=\"700\" alt=\"Trzywarstwowy diagram od klienta przez kontener Jellyfin do hosta Raspberry Pi, z ustawieniami, kt\u00f3re musz\u0105 przekroczy\u0107 ka\u017cd\u0105 granic\u0119\"><figcaption>Na Raspberry Pi 5 Jellyfin transkoduje programowo: V4L2 dla Raspberry Pi jest wycofane, akceleracja sprz\u0119towa stoi na \u201eBrak\u201d, a z bezstanowego dekodera HEVC Jellyfin nie korzysta \u2014 szybkie i oszcz\u0119dne pozostaje tylko Direct Play.<\/figcaption><\/figure>\n<h2>Instrukcja wdro\u017cenia krok po kroku<\/h2>\n<h3>Krok 1: Przygotowanie systemu operacyjnego i weryfikacja urz\u0105dze\u0144 DRM<\/h3>\n<p>Wymagana jest 64-bitowa instalacja systemu Raspberry Pi OS Lite, co gwarantuje kompatybilno\u015b\u0107 z 64-bitowymi bibliotekami sprz\u0119towymi FFmpeg; od pa\u017adziernika 2025 aktualne obrazy bazuj\u0105 na Debianie 13 (Trixie), a Debian 12 (Bookworm) stanowi wersj\u0119 minimaln\u0105. Przed inicjalizacj\u0105 \u015brodowiska kontenerowego obecno\u015b\u0107 w\u0119z\u0142\u00f3w graficznych Direct Rendering Manager (DRM) musi zosta\u0107 zweryfikowana z poziomu terminala:<\/p>\n<pre><code>ls -l \/dev\/dri<\/code><\/pre>\n<p>Prawid\u0142owa odpowied\u017a systemu wy\u015bwietla w\u0119z\u0142y kart graficznych oraz renderowania (<code>card0<\/code>, <code>card1<\/code>, <code>renderD128<\/code>). W celu udost\u0119pnienia tych zasob\u00f3w dla kontener\u00f3w Docker, nale\u017cy sprawdzi\u0107 i przypisa\u0107 uprawnienia do grup systemowych:<\/p>\n<pre><code>sudo usermod -aG video,render \"$USER\"<\/code><\/pre>\n<h3>Krok 2: Struktura katalog\u00f3w i montowanie no\u015bnik\u00f3w NVMe<\/h3>\n<p>W celu zapewnienia natychmiastowego indeksowania biblioteki oraz stabilnego odczytu plik\u00f3w o wysokim bitrate, archiwa wideo powinny znajdowa\u0107 si\u0119 na dysku SSD NVMe pod\u0142\u0105czonym magistral\u0105 PCIe 2.0\/3.0 lub na macierzy USB 3.0 obs\u0142uguj\u0105cej protok\u00f3\u0142 UASP. W \u015bcie\u017cce <code>\/opt\/containers\/jellyfin\/<\/code> tworzy si\u0119 przejrzist\u0105 hierarchi\u0119 katalog\u00f3w:<\/p>\n<pre><code>mkdir -p \/opt\/containers\/jellyfin\/{config,cache}\nmkdir -p \/mnt\/media\/{movies,series}\nchmod -R 755 \/mnt\/media<\/code><\/pre>\n<h3>Krok 3: Konfiguracja deklaratywnego stosu Docker Compose<\/h3>\n<p>Orkiestracja kontenera jest definiowana w pliku <code>\/opt\/containers\/jellyfin\/docker-compose.yml<\/code>. Katalog <code>\/dev\/dri<\/code> hosta, kt\u00f3rego wymaga\u0142aby akceleracja sprz\u0119towa, jest mapowany wewn\u0105trz kontenera, na Raspberry Pi 5 jedynie zapobiegawczo (zob. krok 4), proces kontenera dzia\u0142a pod sta\u0142ym identyfikatorem u\u017cytkownika wskazanym w <code>user<\/code>, a numeryczne identyfikatory grup (GID) <code>render<\/code> oraz <code>video<\/code> z hosta s\u0105 dopisywane przez <code>group_add<\/code>:<\/p>\n<pre><code>services:\n  jellyfin:\n    image: jellyfin\/jellyfin:latest\n    container_name: jellyfin\n    restart: unless-stopped\n    user: \"1000:1000\"\n    group_add:\n      - \"44\"  # Zast\u0105pi\u0107 numerycznym ID grupy 'video' na ho\u015bcie\n      - \"109\" # Zast\u0105pi\u0107 numerycznym ID grupy 'render' na ho\u015bcie\n    network_mode: \"host\"\n    environment:\n      - JELLYFIN_PublishedServerUrl=http:\/\/jellyfin.lukaswojcik.com\n    volumes:\n      - \"\/opt\/containers\/jellyfin\/config:\/config\"\n      - \"\/opt\/containers\/jellyfin\/cache:\/cache\"\n      - \"\/mnt\/media:\/media:ro\"\n    devices:\n      - \"\/dev\/dri:\/dev\/dri\"\n    security_opt:\n      - no-new-privileges:true<\/code><\/pre>\n<p><em>Uwaga techniczna:<\/em> Zastosowanie parametru <code>network_mode: \"host\"<\/code> maksymalizuje przepustowo\u015b\u0107 sieciow\u0105 i umo\u017cliwia automatyczne wykrywanie urz\u0105dze\u0144 w sieci lokalnej przez protoko\u0142y DLNA\/UPnP bez konieczno\u015bci przekierowywania port\u00f3w.<\/p>\n<h3>Krok 4: Ustawienia transkodowania w panelu Jellyfin<\/h3>\n<p>Po uruchomieniu stosu poleceniem <code>docker compose up -d<\/code> transkodowanie jest ustawiane w interfejsie administracyjnym Jellyfin:<\/p>\n<ol>\n<li>Otworzy\u0107 interfejs webowy pod adresem <code>http:\/\/&lt;IP-Raspberry-Pi&gt;:8096<\/code> i przej\u015b\u0107 do sekcji <strong>Kokpit &rarr; Odtwarzanie &rarr; Transkodowanie<\/strong>.<\/li>\n<li>W menu rozwijanym <strong>Akceleracja sprz\u0119towa<\/strong> nie wybiera\u0107 \u017cadnej akceleracji. <strong>Video4Linux2 (V4L2)<\/strong> nic nie daje na Raspberry Pi 5: Jellyfin u\u017cywa przez ni\u0105 wy\u0142\u0105cznie koder\u00f3w V4L2, uk\u0142ad BCM2712 nie ma \u017cadnego kodera wideo, a dokumentacja Jellyfin podaje V4L2 dla Raspberry Pi jako wycofane. Pozycja OpenMAX\/OMX ju\u017c nie istnieje: Jellyfin j\u0105 usun\u0105\u0142, a z Raspberry Pi OS interfejs OMX znikn\u0105\u0142 wraz z wydaniem Bullseye.<\/li>\n<li>P\u00f3l wyboru dekodowania sprz\u0119towego nie trzeba wi\u0119c zaznacza\u0107. Jedynego dekodera sprz\u0119towego uk\u0142adu SoC, tego dla <strong>HEVC<\/strong>, Jellyfin nie u\u017cywa, a blok\u00f3w dekodera H.264, MPEG-2 i MPEG-4 znanych z Raspberry Pi 4 uk\u0142ad BCM2712 ju\u017c nie zawiera \u2014 wszystkie formaty s\u0105 dekodowane programowo na rdzeniach Cortex-A76.<\/li>\n<li>Wskaza\u0107 <strong>\u015acie\u017ck\u0119 FFmpeg<\/strong> jako <code>\/usr\/lib\/jellyfin-ffmpeg\/ffmpeg<\/code> i zapisa\u0107 ustawienia.<\/li>\n<\/ol>\n<h3>Krok 5: Kontrola jako\u015bci i audyt transkodowania w czasie rzeczywistym<\/h3>\n<p>Jak mocno transkodowanie obci\u0105\u017ca procesor i czy Jellyfin w og\u00f3le koduje na nowo, pokazuje weryfikacja podczas aktywnego strumieniowania wideo:<\/p>\n<ol>\n<li><strong>Uruchomienie transkodowanego strumienia:<\/strong> Otworzy\u0107 plik wideo HEVC (H.265) 10-bit w przegl\u0105darce internetowej nieobs\u0142uguj\u0105cej natywnie formatu H.265, wymuszaj\u0105c na serwerze Jellyfin transkodowanie do formatu H.264. Dekodowanie i kodowanie odbywaj\u0105 si\u0119 przy tym programowo: Jellyfin nie korzysta z dekodera HEVC Raspberry Pi 5, a uk\u0142ad BCM2712 nie zawiera \u017cadnego enkodera wideo, wi\u0119c kodowanie H.264 wykonuje libx264 na procesorze.<\/li>\n<li><strong>Weryfikacja obci\u0105\u017cenia CPU:<\/strong> W sesji SSH na Raspberry Pi uruchomi\u0107 polecenie <code>htop<\/code> lub <code>top<\/code>. Poniewa\u017c dekodowanie i kodowanie odbywaj\u0105 si\u0119 programowo, wysokie obci\u0105\u017cenie wszystkich czterech rdzeni jest w tym scenariuszu spodziewane i nie \u015bwiadczy o b\u0142\u0119dnej konfiguracji. Niskie warto\u015bci pojawiaj\u0105 si\u0119 dopiero bez ponownego kodowania, czyli przy Direct Play. To, \u017ce sam dekoder HEVC dzia\u0142a, pokazuje jedynie test samego dekodowania poza Jellyfin, z FFmpeg z Raspberry Pi OS na ho\u015bcie, na przyk\u0142ad <code>ffmpeg -hwaccel drm -i plik.mkv -f null -<\/code>.<\/li>\n<li><strong>Analiza log\u00f3w transkodera:<\/strong> Sprawdzi\u0107 pliki log\u00f3w w \u015bcie\u017cce <code>\/opt\/containers\/jellyfin\/config\/log\/ffmpeg-transcode-*.txt<\/code>. Dekoder taki jak <code>hevc_v4l2m2m<\/code> si\u0119 tam nie pojawi, bo Jellyfin nie ustawia dla V4L2 \u017cadnego dekodera. Wymowny jest wpis po <code>-codec:v:0<\/code>: <code>libx264<\/code> oznacza ponowne kodowanie obrazu, <code>copy<\/code> samo przepakowanie.<\/li>\n<\/ol>\n<h2>Podsumowanie i mierzalna warto\u015b\u0107 dodana<\/h2>\n<p><strong>Co da si\u0119 osi\u0105gn\u0105\u0107 dzi\u0119ki instrukcji:<\/strong> Wdro\u017cenie kontenerowego, samodzielnie hostowanego serwera medi\u00f3w Jellyfin na platformie Raspberry Pi 5, kt\u00f3ry wydaje pliki wideo w trybie Direct Play, a w razie potrzeby transkoduje je programowo.<\/p>\n<p><strong>Wynikaj\u0105ca z tego warto\u015b\u0107 dodana:<\/strong><\/p>\n<ul>\n<li><strong>P\u0142ynne strumieniowanie bez op\u00f3\u017anie\u0144:<\/strong> Archiwa wideo o wysokim bitrate (w tym pliki HEVC\/H.265) s\u0105 odtwarzane natychmiast w trybie Direct Play na urz\u0105dzeniach obs\u0142uguj\u0105cych ich kodek, bez buforowania i przyci\u0119\u0107 obrazu.<\/li>\n<li><strong>Niskie zu\u017cycie energii:<\/strong> Przy Direct Play serwer wydaje plik bez dekodowania, co pozwala utrzyma\u0107 niski pob\u00f3r mocy, umo\u017cliwiaj\u0105c cich\u0105 i ekonomiczn\u0105 prac\u0119 24\/7; transkodowanie przez libx264 obci\u0105\u017ca natomiast wszystkie cztery rdzenie i wymaga aktywnego ch\u0142odzenia.<\/li>\n<li><strong>Pe\u0142na prywatno\u015b\u0107 danych i brak koszt\u00f3w abonamentowych:<\/strong> W\u0142asna kolekcja medi\u00f3w pozostaje w stu procentach w sieci lokalnej bez zale\u017cno\u015bci od chmury publicznej, zewn\u0119trznej telemetrii czy op\u0142at subskrypcyjnych.<\/li>\n<\/ul>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Dlaczego Jellyfin transkoduje, cho\u0107 urz\u0105dzenie odtwarzaj\u0105ce obs\u0142uguje HEVC?<\/h3>\n<p>Bo serwer sprawdza nie tylko kodek wideo. Ponowne kodowanie obrazu staje si\u0119 konieczne tak\u017ce wtedy, gdy inna cz\u0119\u015b\u0107 pliku nie pasuje do urz\u0105dzenia, a na Raspberry Pi 5 ka\u017cde takie kodowanie odbywa si\u0119 programowo. Cz\u0119ste przyczyny to:<\/p>\n<ol>\n<li>Napisy w formatach graficznych, takich jak PGS, kt\u00f3rych urz\u0105dzenie nie wy\u015bwietla samo. Zostaj\u0105 wtopione w obraz, a do tego wideo musi zosta\u0107 zakodowane na nowo. Napisy tekstowe, takie jak SRT, da si\u0119 natomiast zwykle dostarczy\u0107 osobno.<\/li>\n<li>Limit przep\u0142ywno\u015bci w odtwarzaczu ni\u017cszy ni\u017c przep\u0142ywno\u015b\u0107 pliku. Serwer przelicza wtedy materia\u0142 na mniejsz\u0105 przep\u0142ywno\u015b\u0107, nawet je\u015bli kodek pasuje.<\/li>\n<li>\u015acie\u017cka d\u017awi\u0119kowa, kt\u00f3rej urz\u0105dzenie nie obs\u0142uguje. Tu cz\u0119sto wystarczy przekonwertowa\u0107 sam d\u017awi\u0119k, co obci\u0105\u017ca CPU znacznie mniej ni\u017c ponowne kodowanie obrazu.<\/li>\n<\/ol>\n<p>Logi w \/config\/log, kt\u00f3rych artyku\u0142 u\u017cywa do kontroli, pokazuj\u0105, kt\u00f3ry przypadek zachodzi: je\u015bli dla wideo stoi tam copy zamiast libx264, plik jest tylko przepakowywany albo konwertowany jest jego d\u017awi\u0119k. Usuni\u0119cie przyczyn, na przyk\u0142ad przez napisy tekstowe albo wy\u017cszy limit przep\u0142ywno\u015bci w odtwarzaczu, prowadzi do Direct Play, a tym samym do niskich warto\u015bci CPU, kt\u00f3re artyku\u0142 podaje dla tego przypadku.<\/p>\n<h3>Dlaczego w group_add stoj\u0105 liczby, a nie nazwy grup video i render?<\/h3>\n<p>J\u0105dro sprawdza uprawnienia do \/dev\/dri wed\u0142ug numerycznego identyfikatora grupy, a nazwy video i render s\u0105 powi\u0105zane z tymi numerami tylko w systemie hosta; w obrazie kontenera mo\u017ce ich nie by\u0107 albo mog\u0105 mie\u0107 inne numery. W\u0142a\u015bciwe warto\u015bci podaje na ho\u015bcie polecenie getent group video render. Natomiast usermod z kroku 1 dzia\u0142a tylko dla u\u017cytkownika na ho\u015bcie, a nie dla procesu w kontenerze.<\/p>\n<h3>Czy Raspberry Pi 5 potrzebuje w tej konfiguracji aktywnego ch\u0142odzenia?<\/h3>\n<p>Je\u015bli ma transkodowa\u0107, to tak. Poniewa\u017c BCM2712 nie ma kodera wideo, przy ka\u017cdym transkodowaniu libx264 obci\u0105\u017ca wszystkie cztery rdzenie, i to przez ca\u0142y czas trwania filmu. Bez aktywnego ch\u0142odzenia SoC osi\u0105ga temperatur\u0119, przy kt\u00f3rej firmware obni\u017ca taktowanie, a w\u0142a\u015bnie to d\u0142awienie termiczne powoduje zacinanie, kt\u00f3re artyku\u0142 opisuje przy transkodowaniu programowym.<\/p>\n<p>Czy d\u0142awienie ju\u017c wyst\u0105pi\u0142o, pokazuje na ho\u015bcie polecenie vcgencmd get_throttled: warto\u015b\u0107 0x0 oznacza, \u017ce od uruchomienia nie wyst\u0105pi\u0142o ani zbyt niskie napi\u0119cie, ani d\u0142awienie. Przy odtwarzaniu g\u0142\u00f3wnie w trybie Direct Play zwykle wystarcza ch\u0142odzenie pasywne, bo niczego nie trzeba wtedy ani dekodowa\u0107, ani kodowa\u0107.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/jellyfin.org\/docs\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jellyfin documentation<\/a><\/li>\n<li><a href=\"https:\/\/jellyfin.org\/docs\/general\/post-install\/transcoding\/hardware-acceleration\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jellyfin: Hardware Acceleration<\/a><\/li>\n<li><a href=\"https:\/\/www.raspberrypi.com\/documentation\/computers\/raspberry-pi.html\" target=\"_blank\" rel=\"noopener noreferrer\">Raspberry Pi hardware documentation<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Techniczny przewodnik po wdro\u017ceniu serwera medi\u00f3w Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 V4L2 do p\u0142ynnego transkodowania wideo przy minimalnym poborze pr\u0105du.<\/p>\n","protected":false},"author":1,"featured_media":14084,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92634],"tags":[92220,92334,92223,92226,92238],"class_list":["post-532","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-raspberry-pi-pl","tag-homelab-pl","tag-linux-pl","tag-raspberry-pi-pl","tag-self-hosting-pl","tag-tutorial-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 | Lukas Wojcik<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Techniczny przewodnik po wdro\u017ceniu serwera medi\u00f3w Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 V4L2 do p\u0142ynnego transkodowania wideo przy minimalnym poborze pr\u0105du.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-06T17:40:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105\",\"datePublished\":\"2026-10-06T17:40:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/\"},\"wordCount\":1467,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png\",\"keywords\":[\"Homelab\",\"Linux\",\"Raspberry Pi\",\"Self-Hosting\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/\",\"name\":\"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png\",\"datePublished\":\"2026-10-06T17:40:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/tutorials-pl-raspberry-pi-pl\\\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 | Lukas Wojcik","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/","og_locale":"en_US","og_type":"article","og_title":"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 | Lukas Wojcik","og_description":"Techniczny przewodnik po wdro\u017ceniu serwera medi\u00f3w Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 V4L2 do p\u0142ynnego transkodowania wideo przy minimalnym poborze pr\u0105du.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-06T17:40:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105","datePublished":"2026-10-06T17:40:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/"},"wordCount":1467,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png","keywords":["Homelab","Linux","Raspberry Pi","Self-Hosting","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/","name":"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105 | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png","datePublished":"2026-10-06T17:40:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-532-lokalny-serwer-mediow-jellyfin-raspb-g.png","width":1200,"height":630,"caption":"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/tutorials-pl-raspberry-pi-pl\/lokalny-serwer-mediow-bez-opoznien-jellyfin-na-raspberry-pi-5-z-akceleracja\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Lokalny serwer medi\u00f3w bez op\u00f3\u017anie\u0144: Jellyfin na Raspberry Pi 5 z akceleracj\u0105 sprz\u0119tow\u0105"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=532"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/532\/revisions"}],"predecessor-version":[{"id":21687,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/532\/revisions\/21687"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14084"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}