SSD Nodes Learn 🎉 VPS dari $5.50/bln
Panduan Matt ConnorOleh Matt Connor

Cara Aktifkan NVIDIA Hardware Transcoding Jellyfin Docker

Ketahui cara konfigurasi Jellyfin Docker untuk guna GPU NVIDIA dengan NVIDIA Container Toolkit. Ikuti langkah pasang pemacu, kemas kini docker-compose, dan sahkan NVENC.

Apa yang anda sedang bina

Pengekodan perkakasan (hardware transcoding) Jellyfin pada GPU NVIDIA melibatkan empat langkah mengikut urutan tetap, dan hanya langkah terakhir dilakukan di dalam Jellyfin. Kontena tidak dapat mengesan GPU jika pemacu hos belum dimuatkan. Jellyfin tidak dapat menggunakan GPU yang tidak dapat dikesan oleh kontena. Lakukan mengikut urutan ini supaya setiap kegagalan mempunyai satu tempat yang jelas untuk diperiksa.

  1. Pasang pemacu NVIDIA pada hos, kemudian sahkan dengan nvidia-smi.
  2. Pasang NVIDIA Container Toolkit supaya Docker boleh memberikan akses GPU kepada kontena.
  3. Rizabkan GPU untuk servis Jellyfin dalam docker-compose.yml, kemudian sahkan kontena dapat mengesannya.
  4. Hidupkan NVENC dan NVDEC dalam tetapan main balik Jellyfin, kemudian sahkan main balik sebenar menggunakannya.

NVENC (pengekod NVIDIA) dan NVDEC (penyahkod NVIDIA) adalah blok fungsi tetap pada kad grafik. Ia merupakan silikon yang berasingan daripada teras shader yang menjalankan tugas CUDA (compute unified device architecture). Pemisahan inilah sebab utama mengapa proses ini berbaloi: strim yang memakan beberapa teras CPU dalam perisian hanya menggunakan sebahagian kecil daripada satu teras serta blok perkakasan khusus pada GPU.

Direct play lebih baik daripada transcode, jadi periksa perkara itu dahulu

Sebelum anda mengkonfigurasi semua ini, ketahui sama ada anda melakukan transcode atas sebab yang boleh anda hapuskan dengan mudah. Jellyfin melakukan transcode apabila klien tidak dapat memainkan fail tersebut sebagaimana adanya. Sebabnya sentiasa daripada senarai pendek: codec video, codec audio, format kontena, sari kata berasaskan imej, atau had bitrate yang diminta oleh klien.

Buka Dashboard, kemudian Playback, dan perhatikan sesi aktif semasa sesuatu sedang dimainkan. Sesi yang ditandakan sebagai Direct playing menghantar fail tanpa diubah dan hampir tidak menggunakan CPU. Sesi yang ditandakan sebagai Transcoding menunjukkan sebab Jellyfin memilihnya. Hapuskan sebab tersebut dan GPU tidak perlu berjalan langsung.

Dua perubahan menghapuskan kebanyakan transcode. Tetapkan kualiti aplikasi klien kepada Auto atau kepada tahap maksimum, kerana klien yang meminta 4 Mbps akan memaksa pengekodan semula fail 20 Mbps tidak kira apa codec yang dimilikinya. Kemudian, gunakan aplikasi klien natif dan bukannya tab pelayar, kerana pelayar adalah pemain yang paling terhad yang anda miliki dan aplikasi natif pada TV yang sama selalunya akan melakukan direct play pada fail yang sama.

Sari kata berasaskan imej adalah pengecualian yang tidak dapat dibaiki oleh mana-mana tetapan klien. Sari kata PGS daripada rip Blu-ray dan VOBSUB daripada rip DVD adalah gambar, jadi ia perlu dilukis pada video itu sendiri, yang bermaksud pengekodan semula sepenuhnya bagi strim video. Sari kata teks dalam SRT dihantar kepada klien sebagai trek berasingan dan tidak menelan sebarang kos. Menukar trek sari kata kepada teks di mana anda boleh melakukannya adalah lebih berbaloi daripada GPU. Selebihnya bahagian pelayan diliputi dalam panduan menjalankan pelayan media Jellyfin pada VPS.

Kebanyakan pelan VPS tidak mempunyai GPU

Pelan VPS standard tidak menyertakan GPU. Jalankan arahan ini pada pelayan sebelum anda merancang perkara lain.

lspci -nn | grep -Ei "3d|display|vga"

Pada VPS KVM biasa, arahan ini akan memaparkan penyesuai paparan maya daripada hypervisor, atau tiada maklumat berguna. Peranti tersebut tidak boleh mengekod video. GPU sebenar hanya akan muncul apabila pembekal melalukan (pass-through) kad fizikal ke dalam instans anda atau memberikan sebahagian daripada kad tersebut, dan pelan sebegini diletakkan harga mengikut keupayaan tersebut. Beban kerja yang manakah benar-benar mewajarkan pembayaran untuk VPS GPU membincangkan siapa yang patut dan siapa yang tidak patut menggunakannya.

Jika tiada GPU, sasarkan main balik terus (direct play) dan anggap pengekodan perisian (software transcoding) sebagai kes terpencil. Satu pengekodan perisian H.264 1080p adalah berat tetapi masih boleh ditangani oleh beberapa teras CPU. Pengekodan perisian 4K HDR dengan pemetaan tona (tone mapping) bukanlah sesuatu yang boleh diselesaikan oleh VPS kecil dalam masa nyata, jadi strim akan tersekat-sekat sementara CPU kekal pada tahap penggunaan 100 peratus.

Memasang pemacu NVIDIA pada hos

Jellyfin 10.11 mendokumentasikan pemacu NVIDIA minimum versi 520.56.06 pada Linux. Ubuntu menyediakan pembantu yang memilih pakej yang sepadan untuk anda.

sudo ubuntu-drivers list --gpgpu
sudo ubuntu-drivers install --gpgpu
sudo reboot

--gpgpu memilih varian pelayan tanpa kepala (headless) bagi pemacu tersebut, iaitu pilihan yang diperlukan oleh pelayan media kerana tiada desktop pada mesin tersebut. Perintah senarai akan memaparkan cawangan yang tersedia untuk anda, dan anda boleh menetapkan satu cawangan mengikut nama, contohnya sudo ubuntu-drivers install --gpgpu nvidia:570-server. Gunakan cawangan yang benar-benar dipaparkan oleh senarai tersebut, bukan yang ditulis di sini.

Varian pelayan tidak sentiasa menarik masuk nvidia-smi. Pasang pakej utils yang sepadan untuk cawangan yang anda pilih, contohnya sudo apt install nvidia-utils-570-server. Kemudian, periksa pemacu tersebut.

nvidia-smi

Hasil yang baik akan memaparkan jadual dengan versi pemacu dan versi CUDA pada pengepala, kad anda disenaraikan mengikut nama, serta senarai proses yang kosong. Dua kegagalan sering berlaku di sini. nvidia-smi: command not found bermaksud pakej utils tiada, bukan pemacu tersebut. NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver bermaksud modul kernel tidak dimuatkan, yang pada pemasangan baharu hampir selalu bermaksud anda belum melakukan but semula, atau Secure Boot menghalang pemuatan modul yang tidak ditandatangani. Sahkan modul tersebut ada dengan lsmod | grep nvidia.

Memasang NVIDIA Container Toolkit

Pemacu membolehkan hos menggunakan GPU. Docker masih tidak akan melalukan GPU ke dalam kontena kerana kontena tersebut tidak mempunyai nod peranti mahupun pustaka pemacu. NVIDIA Container Toolkit ialah komponen yang menyuntik kedua-duanya semasa kontena dimulakan. Berikut ialah arahan pemasangan rasmi NVIDIA untuk Debian dan Ubuntu.

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

Memasang pakej sahaja tidak mencukupi kerana Docker perlu dimaklumkan tentang kewujudan runtime tersebut.

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

nvidia-ctk runtime configure menulis entri runtime nvidia ke dalam /etc/docker/daemon.json. Langkah memulakan semula (restart) adalah bahagian yang sering dilupakan oleh pengguna, dan kegagalan melakukannya merupakan punca ralat paling lazim dalam keseluruhan persediaan ini. Uji sambungan tersebut sebelum anda menyentuh Jellyfin.

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

Arahan tersebut sepatutnya memaparkan jadual yang sama seperti yang dipaparkan oleh hos. Jika ia gagal dengan ralat yang menyatakan ketidakupayaan untuk memilih pemacu peranti dengan keupayaan gpu, ini bermakna Docker daemon tidak mengenali runtime nvidia. Jalankan semula arahan konfigurasi dan mulakan semula daemon tersebut.

Memberikan GPU kepada kontena Jellyfin dalam Docker Compose

Ini ialah format Compose moden yang sepadan dengan contoh yang diterbitkan oleh Jellyfin.

services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    user: 1000:1000
    network_mode: host
    restart: unless-stopped
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=all
    volumes:
      - /srv/jellyfin/config:/config
      - /srv/jellyfin/cache:/cache
      - /srv/media:/media:ro
    runtime: nvidia
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

Jalankan servis tersebut dan tanya kontena itu secara terus.

docker compose up -d
docker compose exec jellyfin nvidia-smi

Jika arahan tersebut memaparkan jadual pemacu dari dalam kontena, GPU telah dilalukan (passthrough) dengan betul dan setiap masalah yang berbaki adalah tetapan Jellyfin.

Empat baris dalam fail tersebut memerlukan penjelasan. capabilities: [gpu] diperlukan oleh Compose itu sendiri, dan jika ditinggalkan, Compose akan menolak servis tersebut daripada bermula tanpa GPU. NVIDIA_DRIVER_CAPABILITIES=all penting kerana toolkit hanya melekapkan pustaka video ke dalam kontena apabila keupayaan video diminta, dan dokumentasi Jellyfin menyenaraikan pemboleh ubah ini sebagai wajib untuk imej rasmi. Tanpanya, CUDA berfungsi manakala NVDEC tidak, dan log transkod melaporkan Cannot load libnvcuvid.so.1. network_mode: host ialah apa yang digunakan oleh contoh Jellyfin sendiri, kerana penemuan automatik klien pada port UDP 7359 tidak berfungsi dalam rangkaian bridge.

user: 1000:1000 ialah yang terakhir, dan ia tiada kaitan dengan GPU. Ia menentukan fail mana yang boleh dibaca oleh Jellyfin pada lekap media anda, dan ketidakpadanan di sini akan menyebabkan pustaka kelihatan kosong dan bukannya ralat kebenaran (permissions error). Bagaimana PUID dan PGID memetakan pengguna kontena kepada fail pada cakera menjelaskan penomboran tersebut, dan ia adalah penomboran yang sama yang telah anda tetapkan jika anda menjalankan stack Sonarr dan Radarr dalam Docker Compose di samping ini.

Mengapa kebanyakan tutorial masih menulis runtime: nvidia

Bentuk lama muncul dalam hampir setiap panduan yang anda temui, dan ia tidak salah. Ia adalah sejarah. Pakej nvidia-docker2 yang asal mendaftarkan runtime OCI bernama nvidia, jadi satu-satunya cara untuk memasukkan GPU ke dalam kontena adalah --runtime=nvidia berserta NVIDIA_VISIBLE_DEVICES. Docker 19.03 menambah flag --gpus dan API permintaan peranti yang betul. Compose mengambil masa lebih lama untuk menyusul, dan apabila ia melakukannya, permintaan peranti diletakkan di bawah deploy.resources.reservations.devices, kunci yang kebanyakan orang telah belajar untuk abaikan kerana deploy dahulu bermaksud Docker Swarm.

Hasilnya ialah kedua-dua bentuk berfungsi hari ini, dan contoh yang diterbitkan oleh Jellyfin membawa kedua-duanya sekali gus. Mengekalkan runtime: nvidia tidak menelan sebarang kos dan menjadikan fail tersebut berfungsi pada versi Compose yang lebih lama. Jika anda hanya mengekalkan runtime: nvidia dan membuang blok deploy, anda mesti mengekalkan NVIDIA_VISIBLE_DEVICES=all, kerana laluan legasi itu membaca pemboleh ubah persekitaran untuk menentukan peranti mana yang perlu disuntik dan tidak mempunyai permintaan peranti untuk dibaca sebagai gantinya.

Hidupkan transkod perkakasan NVIDIA dalam Jellyfin

Setakat ini, tiada tetapan yang mengarahkan Jellyfin untuk menggunakan kad tersebut. Pergi ke Dashboard, kemudian Playback, dan seterusnya Transcoding. Tetapkan Hardware acceleration kepada Nvidia NVENC. Tandakan Enable hardware encoding, jika tidak Jellyfin akan menyahkod pada GPU dan kemudian mengekod pada CPU, iaitu keadaan pertengahan yang mengelirukan di mana GPU menunjukkan aktiviti tetapi CPU masih dibebankan.

Enable enhanced NVDEC decoder menukar antara laluan NVDEC semasa dan laluan CUVID yang lebih lama. Biarkan ia dihidupkan. Pengendalian Dolby Vision memerlukannya dihidupkan untuk menggunakan NVDEC sama sekali.

Di bawah Enable hardware decoding for, tandakan hanya kodek yang boleh dinyahkod oleh kad anda. Ini adalah tetapan yang sering disalah faham oleh pengguna. Menandakan AV1 pada kad yang tidak mempunyai penyahkod AV1 tidak akan menghasilkan mesej ralat. Jellyfin meminta penyahkodan perkakasan, tidak mendapatkannya, lalu kembali kepada penyahkodan perisian. Akibatnya, anda mendapat penggunaan CPU yang tinggi dan GPU yang hampir melahu, yang kelihatan sama seperti passthrough tidak berfungsi langsung.

Satu lagi kekangan terpakai untuk keseluruhan halaman ini: pecutan perkakasan hanya berfungsi dengan binaan jellyfin-ffmpeg yang dibundelkan. Jika anda menghalakan laluan FFmpeg kepada FFmpeg sistem, anda akan mendapat pecutan separa atau tiada pecutan langsung.

Codec yang boleh dinyahkod dan dikod oleh generasi GPU anda

Ini adalah batasan yang didokumenkan oleh Jellyfin untuk NVENC dan NVDEC. Nyahkod dan kod adalah keupayaan yang berasingan, dan sesebuah kad boleh mempunyai satu keupayaan tanpa yang satu lagi.

  • H.264 8-bit: setiap GPU NVIDIA dengan NVENC dan NVDEC boleh menyahkod dan mengodnya.
  • HEVC 8-bit: nyahkod dan kod daripada Maxwell generasi kedua (GM206) dan lebih baharu.
  • HEVC 10-bit: nyahkod daripada Maxwell generasi kedua dan lebih baharu, tetapi kod hanya daripada Pascal dan lebih baharu.
  • AV1: nyahkod daripada Ampere dan lebih baharu, kod daripada Ada Lovelace dan lebih baharu.

Perbezaan HEVC 10-bit adalah perkara yang sering menjadi masalah dalam praktikal. Kad era Maxwell menyahkod fail 4K HDR anda pada GPU tetapi tidak dapat mengod output 10-bit, jadi Jellyfin mengod H.264 8-bit sebagai gantinya. Ia masih boleh dimainkan, dan ia merupakan pilihan yang tepat untuk kebanyakan klien. Pengekodan AV1 jarang sekali menjadi pilihan yang anda mahukan pada tahun 2026 tanpa mengira kad anda, kerana sokongan nyahkod AV1 pada sisi klien masih terhad dan transkod wujud untuk mencapai klien yang sudah pun mengalami masalah main balik.

Mengapa pemetaan tona (tone mapping) membebankan GPU secara senyap

Pemetaan tona daripada HDR (high dynamic range) kepada SDR (standard dynamic range) merupakan tetapan yang menghabiskan bajet GPU anda, dan puncanya adalah dari segi seni bina. Penyahkodan (decode) berjalan pada NVDEC. Pengekodan (encode) berjalan pada NVENC. Pemetaan tona tidak berjalan pada kedua-duanya: ia merupakan penapis CUDA yang dilaksanakan pada teras shader, iaitu bahagian GPU kegunaan am yang sama yang menjalankan kerja pengkomputeran. Jadi, strim 4K HDR yang memerlukan pemetaan tona menggunakan penyahkod dan pengekod, serta membebankan shader secara serentak.

Jellyfin mendokumentasikan pemetaan tona CUDA sebagai tersedia pada setiap GPU NVIDIA yang boleh menyahkod HEVC 10-bit. Ini bermakna kotak semak tersebut muncul dan berfungsi pada kad yang tidak mampu menampungnya pada resolusi 4K. Simptomnya ialah strim yang bermula, mengalami penimbalan (buffering), dan tidak pernah stabil, sedangkan nvidia-smi melaporkan pengekod hampir tidak sibuk.

Inilah sebabnya beban shader perlu dipantau secara berasingan.

nvidia-smi dmon -s u

Perintah tersebut mencetak satu baris sesaat dengan lajur berasingan untuk sm, enc dan dec. Nilai enc dan dec yang rendah bersebelahan dengan nombor sm yang tinggi bermakna blok fungsi tetap (fixed-function blocks) tidak bekerja keras dan shader menjadi penyempit (bottleneck), jadi pemetaan tona, penskalaan (scaling), atau pembakaran sari kata (subtitle burn-in) adalah punca bebanan anda. Laluan CUDA juga mengendalikan Dolby Vision profile 5 dengan zero copy, yang penting kerana tanpa zero copy, bingkai akan dihantar ke memori sistem dan kembali semula antara langkah penapisan, dan perjalanan pergi-balik itu memakan lebar jalur pada setiap bingkai.

Had pengehad sesi NVENC pengguna yang sebenar

ChartNVENC engines and concurrent encode session cap, NVIDIA published support matrix, August 2026
The data behind this chart
[
  {
    "label": "GeForce RTX 5090",
    "nvenc_engines": 3,
    "max_encode_sessions": 12
  },
  {
    "label": "GeForce RTX 4090",
    "nvenc_engines": 2,
    "max_encode_sessions": 12
  },
  {
    "label": "GeForce RTX 4060",
    "nvenc_engines": 1,
    "max_encode_sessions": 12
  }
]

Angka-angka tersebut adalah angka matriks yang diterbitkan oleh NVIDIA setakat Ogos 2026, bukan ukuran yang diambil di sini. Kad GeForce dihadkan kepada 12 sesi pengekodan serentak tanpa mengira modelnya. Had ini terletak pada pemacu (driver) dan bukannya pada silikon, dan NVIDIA telah meningkatkannya lebih daripada sekali sepanjang tahun, jadi bacalah matriks semasa dan bukannya bebenang forum yang lama. Bilangan enjin adalah bahagian yang benar-benar berubah mengikut kad: GeForce RTX 5090 membawa 3 enjin NVENC manakala GeForce RTX 4060 membawa 1. Lebih banyak enjin bermakna lebih banyak throughput pengekodan selari, bukan siling sesi yang lebih tinggi.

Had ini mengira sesi pengekodan, jadi ia hanya mengira strim transkod sahaja. Main terus (direct play) dan remuxing tidak pernah membuka sesi pengekodan. Kad pusat data seperti L4 disenaraikan sebagai tidak terhad dalam matriks yang sama, dan kad pusat data biasanya merupakan apa yang diberikan oleh pelan GPU VPS kepada anda, jadi had ini kebanyakannya menjadi kebimbangan pelayan rumah (home-server).

Apabila anda mencapai had tersebut, transkod akan gagal dan log FFmpeg akan membawa OpenEncodeSessionEx failed: out of memory (10). Mesej tersebut menyebut tentang memori, tetapi penolakan had sesi melaporkan kod yang sama, jadi periksa bilangan strim serentak anda sebelum anda mencari kebocoran VRAM. Secara praktikalnya, kebanyakan orang mencapai siling pemetaan ton (tone-mapping) atau lebar jalur muat naik mereka jauh sebelum sesi kedua belas.

Buktikan GPU sedang melakukan transkod, jangan percaya pada konfigurasi

Tetapan yang disimpan bukanlah bukti. Mainkan fail yang anda tahu akan memaksa transkod, kemudian jalankan tiga pemeriksaan.

  1. Buka Dashboard, kemudian Playback. Sesi aktif sepatutnya memaparkan Transcoding, dan ia harus menyatakan sebabnya. Jika ia memaparkan Direct playing, tiada apa-apa yang ditranskod dan anda sedang menguji fail yang salah.
  2. Buka Dashboard, kemudian Logs, dan buka log FFmpeg.Transcode yang terbaharu. Transkod perkakasan akan memaparkan -hwaccel cuda dan -hwaccel_output_format cuda pada baris perintah, dengan h264_nvenc atau hevc_nvenc sebagai pengekod (encoder). Melihat libx264 di situ bermakna anda sedang melakukan transkod menggunakan perisian, tidak kira apa yang didakwa oleh halaman tetapan.
  3. Jalankan nvidia-smi pada hos semasa main balik diteruskan. Satu proses daripada /usr/lib/jellyfin-ffmpeg/ffmpeg sepatutnya muncul dengan memori GPU diperuntukkan, dan nvidia-smi dmon -s u sepatutnya menunjukkan lajur enc dan dec yang bukan sifar.

Jalankan pemeriksaan ketiga itu pada hos, bukan di dalam kontena. nvidia-smi di dalam kontena biasanya menunjukkan senarai proses yang kosong kerana ia tidak dapat melihat ID proses dari luar namespace miliknya sendiri, walaupun angka penggunaan masih dibaca dengan betul. Senarai proses yang kosong di dalam kontena bukanlah satu ralat.

Apabila ia beralih ke perisian tanpa pemberitahuan

Jellyfin lebih mengutamakan kesinambungan main balik. Apabila laluan perkakasan tidak tersedia, ia akan beralih ke perisian dan bukannya menghentikan strim. Oleh itu, petunjuk sebenar adalah beban CPU dan log FFmpeg, bukannya sepanduk ralat.

Cannot load libnvcuvid.so.1 dalam log transcode bermaksud pustaka penyahkod tidak dipasang ke dalam kontena. Tetapkan NVIDIA_DRIVER_CAPABILITIES=all dan cipta semula kontena tersebut, kerana perubahan persekitaran memerlukan docker compose up -d untuk membina semula kontena, manakala mulakan semula (restart) biasa akan mengekalkan tetapan lama.

No capable devices found daripada h264_nvenc bermaksud FFmpeg telah mencapai pustaka pengekod tetapi tidak menemui kad yang boleh digunakan. Semak docker compose exec jellyfin nvidia-smi sekali lagi, kerana ini biasanya bermaksud tempahan peranti telah dibuang atau kontena dicipta semula daripada fail yang lapuk.

CPU yang tinggi dengan GPU yang tidak aktif bermaksud bahagian penyahkodan gagal secara senyap. Nyahtanda codec yang tidak dapat dinyahkod oleh generasi perkakasan anda, kemudian mainkan semula fail yang sama dan baca log FFmpeg sekali lagi untuk melihat sama ada -hwaccel cuda muncul.

Transcode yang bermula dan kemudian terhenti pada 4K HDR sedangkan 1080p berfungsi dengan baik adalah had pemetaan ton (tone-mapping), bukannya pemasangan yang rosak. Sahkan perkara ini dengan lajur sm dalam nvidia-smi dmon -s u, kemudian sama ada rendahkan resolusi yang diminta oleh klien atau simpan fail 4K HDR pada klien yang boleh melakukan direct play.

FAQ

Mengapa Jellyfin masih menggunakan CPU selepas saya mendayakan NVENC?

Semak log FFmpeg.Transcode terkini di bawah Dashboard, kemudian Logs. Jika ia menunjukkan libx264, tiada laluan perkakasan digunakan langsung, yang biasanya bermaksud kontena tidak dapat mengesan GPU, jadi jalankan docker compose exec jellyfin nvidia-smi untuk mengesahkan. Jika ia menunjukkan h264_nvenc tetapi CPU masih sibuk, bahagian penyahkodan (decode) berjalan dalam perisian. Ini berlaku apabila anda menanda codec yang tidak boleh dinyahkod oleh kad anda atau apabila Enable hardware encoding tidak diaktifkan, menyebabkan hanya separuh daripada aliran kerja berpindah ke GPU.

Adakah saya masih memerlukan baris runtime: nvidia dalam Docker Compose?

Tidak, jika anda mempunyai blok deploy.resources.reservations.devices dan Docker Compose versi terkini. Blok tersebut ialah bentuk permintaan peranti moden dan melakukan tugas yang sama. runtime: nvidia ialah laluan lama daripada era nvidia-docker2; ia masih berfungsi, dan contoh yang diterbitkan oleh Jellyfin sendiri mengekalkan kedua-duanya. Mengekalkan kedua-duanya tidak mendatangkan masalah. Mengekalkan runtime: nvidia sahaja bermakna anda juga mesti mengekalkan NVIDIA_VISIBLE_DEVICES=all, kerana laluan tersebut tidak mempunyai permintaan peranti untuk dibaca dan mengambil senarai peranti daripada persekitaran (environment).

Berapa banyak strim yang boleh ditranskod oleh satu GPU NVIDIA serentak?

Matriks yang diterbitkan oleh NVIDIA mengehadkan kad GeForce kepada dua belas sesi pengekodan serentak setakat Ogos 2026, manakala kad pusat data disenaraikan sebagai tidak terhad. Had tersebut jarang menjadi punca masalah anda. Pemetaan tona (tone mapping) HDR ke SDR berjalan pada teras shader dan bukannya pada NVENC, jadi beberapa strim 4K HDR akan menghabiskan keupayaan shader jauh sebelum pembilang sesi menjadi relevan. Ukur kes anda sendiri dengan nvidia-smi dmon -s u dan perhatikan lajur sm, bukan kiraan sesi.

Bolehkah saya menggunakan transkod perkakasan pada VPS tanpa GPU?

Tidak. Pengekodan memerlukan blok NVENC fizikal, dan lspci -nn | grep -Ei "3d|display|vga" pada VPS standard hanya menunjukkan penyesuai paparan maya daripada hypervisor. Jawapan realistik pada pelan tanpa GPU adalah dengan mengurangkan transkod: tingkatkan tetapan kualiti klien kepada Auto, gunakan aplikasi klien natif dan bukannya pelayar, serta tukarkan trek sari kata berasaskan imej kepada teks supaya ia tidak memaksa pengekodan semula video.

Mengapa 4K HDR tersekat-sekat sedangkan 1080p ditranskod dengan lancar?

Kedua-dua beban kerja menggunakan bahagian kad yang berbeza. Transkod SDR 1080p hanya melibatkan penyahkodan dan pengekodan, kedua-duanya pada perkakasan fungsi tetap. Strim 4K HDR menambah pemetaan tona, iaitu penapis CUDA yang berjalan pada teras shader, ditambah dengan bingkai yang jauh lebih besar untuk diskalakan. nvidia-smi dmon -s u yang menunjukkan enc dan dec rendah di samping sm yang tinggi mengesahkan perkara ini, kerana corak tersebut bermaksud blok fungsi tetap melahu dan teras tujuan am menjadi hadnya.