Transcoding NVIDIA Jellyfin di Docker: NVENC dan NVDEC
Panduan Docker Compose untuk memberi akses GPU NVIDIA ke Jellyfin, mengaktifkan NVENC dan NVDEC, serta memverifikasi transcoding nyata dengan nvidia-smi.
Yang Anda bangun
Transcoding perangkat keras Jellyfin pada GPU NVIDIA terdiri dari 4 langkah dalam urutan tetap. Hanya langkah terakhir yang dilakukan di dalam Jellyfin. Container tidak dapat melihat GPU jika driver pada host belum memuatnya. Jellyfin tidak dapat menggunakan GPU yang tidak dapat dilihat oleh container. Ikuti urutan ini agar setiap kegagalan memiliki lokasi pemeriksaan yang jelas.
- Instal driver NVIDIA pada host, lalu konfirmasikan dengan
nvidia-smi. - Instal NVIDIA Container Toolkit agar Docker dapat memberikan akses GPU kepada container.
- Tetapkan GPU untuk service Jellyfin dalam
docker-compose.yml, lalu konfirmasikan bahwa container dapat melihatnya. - Aktifkan NVENC dan NVDEC dalam pengaturan pemutaran Jellyfin, lalu konfirmasikan bahwa pemutaran nyata menggunakannya.
NVENC (encoder NVIDIA) dan NVDEC (decoder NVIDIA) adalah blok fungsi tetap pada kartu. Keduanya merupakan silikon terpisah dari inti shader yang menjalankan pekerjaan CUDA (compute unified device architecture). Pemisahan ini menjadi alasan utama penggunaan transcoding perangkat keras: stream yang menggunakan beberapa inti CPU saat diproses oleh software hanya memerlukan sebagian kecil dari satu inti CPU serta satu blok perangkat keras khusus pada GPU.
Direct play lebih baik daripada transcoding apa pun, jadi periksa hal itu terlebih dahulu
Sebelum mengonfigurasi semua ini, cari tahu apakah transcoding terjadi karena alasan yang dapat Anda hilangkan dengan mudah. Jellyfin melakukan transcoding ketika client tidak dapat memutar file apa adanya. Penyebabnya selalu termasuk dalam daftar singkat: codec video, codec audio, format container, subtitle berbasis gambar, atau batas bitrate yang diminta client.
Buka Dashboard, lalu Playback, dan pantau sesi aktif saat sesuatu diputar. Sesi yang berstatus Direct playing mengirimkan file tanpa perubahan dan hampir tidak menggunakan CPU. Sesi yang berstatus Transcoding menampilkan alasan yang dipilih Jellyfin. Hilangkan alasan tersebut, dan GPU tidak perlu bekerja sama sekali.
Dua perubahan dapat menghilangkan sebagian besar transcoding. Atur kualitas aplikasi client ke Auto atau nilai maksimum, karena client yang meminta 4 Mbps akan memaksa pengodean ulang file 20 Mbps, apa pun codec yang digunakan. Gunakan aplikasi client native, bukan tab browser, karena browser adalah pemutar paling terbatas yang Anda miliki. Aplikasi native pada TV yang sama sering kali dapat melakukan direct play terhadap file yang identik.
Subtitle berbasis gambar adalah pengecualian yang tidak dapat diperbaiki dengan pengaturan client. Subtitle PGS dari rip Blu-ray dan VOBSUB dari rip DVD berupa gambar, sehingga harus digambar langsung ke video. Akibatnya, stream video harus menjalani pengodean ulang penuh. Subtitle teks dalam format SRT dikirim ke client sebagai track terpisah dan tidak menambah beban. Jika memungkinkan, mengonversi track subtitle menjadi teks lebih bermanfaat daripada menggunakan GPU. Sisi server lainnya dibahas dalam panduan menjalankan server media Jellyfin pada VPS.
Sebagian besar paket VPS sama sekali tidak memiliki GPU
Paket VPS standar tidak menyertakan GPU. Jalankan perintah ini di server sebelum merencanakan hal lain.
lspci -nn | grep -Ei "3d|display|vga"Pada VPS KVM biasa, perintah ini menampilkan adaptor tampilan virtual dari hypervisor atau tidak menampilkan informasi yang berguna. Perangkat tersebut tidak dapat melakukan encoding video. GPU nyata hanya tersedia jika provider meneruskan kartu fisik ke instance Anda atau memberikan sebagian kapasitasnya, dan harga paket tersebut disesuaikan. Beban kerja yang benar-benar layak menggunakan VPS dengan GPU menjelaskan siapa yang sebaiknya membayar GPU VPS dan siapa yang tidak.
Jika tidak ada GPU, utamakan direct play dan anggap transcoding perangkat lunak sebagai kasus yang jarang terjadi. Satu transcoding perangkat lunak 1080p H.264 membebani sistem, tetapi masih dapat ditangani oleh beberapa core CPU. Transcoding perangkat lunak 4K HDR dengan tone mapping tidak dapat diselesaikan VPS kecil secara real time, sehingga stream tersendat saat penggunaan CPU mencapai 100 persen.
Instal driver NVIDIA pada host
Jellyfin 10.11 mendokumentasikan driver NVIDIA minimum versi 520.56.06 pada Linux. Ubuntu menyediakan helper yang memilihkan paket yang sesuai.
sudo ubuntu-drivers list --gpgpu
sudo ubuntu-drivers install --gpgpu
sudo reboot--gpgpu memilih varian driver untuk server headless. Varian ini sesuai untuk server media karena host tidak memiliki desktop. Perintah list menampilkan branch yang tersedia untuk Anda. Anda dapat menetapkan salah satunya berdasarkan nama, misalnya sudo ubuntu-drivers install --gpgpu nvidia:570-server. Gunakan branch yang benar-benar ditampilkan oleh perintah tersebut, bukan branch yang ditulis di sini.
Varian server tidak selalu memasang nvidia-smi. Instal paket utils yang sesuai dengan branch yang Anda pilih, misalnya sudo apt install nvidia-utils-570-server. Kemudian periksa driver.
nvidia-smiHasil yang sehat menampilkan tabel dengan versi driver dan versi CUDA pada header, kartu Anda tercantum berdasarkan namanya, serta daftar proses yang kosong. Dua kegagalan berikut umum terjadi. nvidia-smi: command not found berarti paket utils belum terpasang, bukan driver yang bermasalah. NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver berarti modul kernel belum dimuat. Pada instalasi baru, penyebabnya hampir selalu karena Anda belum melakukan reboot atau Secure Boot menolak memuat modul yang tidak ditandatangani. Pastikan modul tersebut tersedia dengan lsmod | grep nvidia.
Instal NVIDIA Container Toolkit
Driver memungkinkan host menggunakan GPU. Namun, Docker tetap tidak akan meneruskannya ke dalam container karena container tidak memiliki node perangkat maupun pustaka driver. NVIDIA Container Toolkit memasukkan keduanya saat container dijalankan. Berikut adalah perintah instalasi resmi 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-toolkitMenginstal paket saja tidak cukup karena Docker harus diberi tahu bahwa runtime tersebut tersedia.
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockernvidia-ctk runtime configure menulis entri runtime nvidia ke dalam /etc/docker/daemon.json. Restart adalah langkah yang sering dilewati. Jika langkah ini dilewati, biasanya muncul error yang paling umum dalam seluruh konfigurasi ini. Uji mekanismenya sebelum mengonfigurasi Jellyfin.
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smiPerintah tersebut seharusnya menampilkan tabel yang sama seperti yang ditampilkan host. Jika perintah gagal dengan error tentang ketidakmampuan memilih device driver dengan kemampuan gpu, daemon Docker tidak mengetahui runtime nvidia. Jalankan kembali perintah konfigurasi, lalu restart daemon.
Berikan GPU ke container Jellyfin di Docker Compose
Ini adalah format Compose modern yang sesuai dengan contoh yang dipublikasikan 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 container tersebut, lalu minta container memeriksanya secara langsung.
docker compose up -d
docker compose exec jellyfin nvidia-smiJika perintah tersebut menampilkan tabel driver dari dalam container, GPU telah diteruskan dengan benar. Semua masalah yang tersisa berarti terkait dengan pengaturan Jellyfin.
Empat baris dalam file tersebut perlu dijelaskan. capabilities: [gpu] diperlukan oleh Compose itu sendiri. Jika baris ini tidak ada, Compose akan menolak service tersebut, bukan menjalankannya tanpa GPU. NVIDIA_DRIVER_CAPABILITIES=all penting karena toolkit hanya memasang pustaka video ke dalam container ketika kemampuan video diminta. Dokumentasi Jellyfin juga mencantumkan variabel ini sebagai persyaratan untuk image resmi. Tanpanya, CUDA berfungsi, tetapi NVDEC tidak. Log transcode akan melaporkan Cannot load libnvcuvid.so.1. network_mode: host digunakan dalam contoh Jellyfin sendiri karena auto-discovery client pada port UDP 7359 tidak dapat melewati bridge network.
user: 1000:1000 adalah baris terakhir. Baris ini tidak berkaitan dengan GPU. Baris ini menentukan file yang dapat dibaca Jellyfin pada mount media. Ketidakcocokan di sini menyebabkan library kosong, bukan error izin. Cara PUID dan PGID memetakan user container ke file di disk menjelaskan penomoran tersebut. Penomoran ini sama dengan yang sudah Anda tetapkan jika Anda menjalankan stack Sonarr dan Radarr di Docker Compose di server yang sama.
Mengapa sebagian besar tutorial masih menulis runtime: nvidia
Bentuk lama tersebut muncul di hampir setiap panduan yang akan Anda temukan, dan bentuk itu tidak salah. Penyebabnya adalah riwayat kompatibilitas. Paket nvidia-docker2 yang asli mendaftarkan runtime OCI bernama nvidia. Karena itu, satu-satunya cara untuk memberikan GPU ke container adalah --runtime=nvidia ditambah NVIDIA_VISIBLE_DEVICES. Docker 19.03 menambahkan flag --gpus dan API permintaan perangkat yang sesuai. Compose memerlukan waktu lebih lama untuk mendukungnya. Setelah dukungan tersebut tersedia, permintaan perangkat ditempatkan di bawah deploy.resources.reservations.devices, yaitu kunci yang sering diabaikan karena sebelumnya deploy berarti Docker Swarm.
Akibatnya, kedua bentuk tersebut saat ini berfungsi, dan contoh yang dipublikasikan Jellyfin menyertakan keduanya sekaligus. Mempertahankan runtime: nvidia tidak menimbulkan biaya apa pun dan membuat file tersebut berfungsi pada versi Compose yang lebih lama. Jika Anda hanya mempertahankan runtime: nvidia dan menghapus blok deploy, Anda harus mempertahankan NVIDIA_VISIBLE_DEVICES=all. Jalur lama tersebut membaca variabel lingkungan untuk menentukan perangkat yang harus disisipkan. Jalur tersebut tidak memiliki permintaan perangkat lain untuk dibaca.
Aktifkan transcoding hardware NVIDIA di Jellyfin
Sejauh ini belum ada konfigurasi yang memberi tahu Jellyfin untuk menggunakan kartu tersebut. Buka Dashboard, lalu Playback, kemudian Transcoding. Atur Hardware acceleration ke Nvidia NVENC. Centang Enable hardware encoding. Jika tidak, Jellyfin mendekode video di GPU lalu mengenkodenya di CPU. Kondisi ini membingungkan karena GPU terlihat aktif, tetapi CPU tetap bekerja berat.
Aktifkan enhanced NVDEC decoder untuk menggunakan jalur NVDEC saat ini, bukan jalur CUVID yang lebih lama. Biarkan opsi ini aktif. Pemrosesan Dolby Vision memerlukannya agar NVDEC dapat digunakan.
Pada bagian Enable hardware decoding for, centang hanya codec yang benar-benar dapat didekode oleh kartu Anda. Banyak orang keliru pada pengaturan ini. Mencentang AV1 pada kartu yang tidak memiliki decoder AV1 tidak akan menghasilkan pesan error. Jellyfin meminta decoding hardware, tetapi tidak mendapatkannya. Jellyfin kemudian beralih ke decoding software. Akibatnya, penggunaan CPU tinggi, sedangkan GPU hampir tidak aktif. Kondisi ini tampak persis seperti passthrough tidak pernah berfungsi.
Ada satu batasan lain yang berlaku untuk seluruh halaman ini: hardware acceleration hanya berfungsi dengan build jellyfin-ffmpeg yang disertakan. Jika Anda mengarahkan jalur FFmpeg ke FFmpeg sistem, akselerasi yang diperoleh hanya sebagian atau tidak ada sama sekali.
Codec yang dapat didekode dan dienkode oleh generasi GPU Anda
Berikut batasan yang didokumentasikan Jellyfin untuk NVENC dan NVDEC. Dekode dan enkode adalah kemampuan yang terpisah. Sebuah kartu dapat mendukung salah satunya tanpa mendukung yang lain.
- H.264 8-bit: setiap GPU NVIDIA dengan NVENC dan NVDEC dapat mendekode dan menkodekannya.
- HEVC 8-bit: dekode dan enkode didukung mulai Maxwell generasi kedua (GM206) dan yang lebih baru.
- HEVC 10-bit: dekode didukung mulai Maxwell generasi kedua dan yang lebih baru, tetapi enkode hanya didukung mulai Pascal dan yang lebih baru.
- AV1: dekode didukung mulai Ampere dan yang lebih baru, sedangkan enkode didukung mulai Ada Lovelace dan yang lebih baru.
Pemisahan dukungan HEVC 10-bit adalah hal yang paling sering menimbulkan masalah dalam praktik. Kartu generasi Maxwell dapat mendekode file 4K HDR Anda pada GPU, tetapi tidak dapat menkodekan output 10-bit. Karena itu, Jellyfin menkodekan H.264 8-bit. Hasilnya tetap dapat diputar, dan ini merupakan pilihan yang tepat untuk sebagian besar klien. Enkode AV1 jarang menjadi pilihan yang tepat pada 2026, terlepas dari kartu yang Anda gunakan, karena dukungan dekode AV1 pada sisi klien masih terbatas. Selain itu, transcode digunakan untuk menjangkau klien yang sejak awal sudah mengalami masalah pemutaran.
Mengapa tone mapping diam-diam kembali membebani GPU
Tone mapping HDR (high dynamic range) ke SDR (standard dynamic range) adalah pengaturan yang menghabiskan anggaran GPU. Penyebabnya bersifat arsitektural. Decode berjalan pada NVDEC. Encode berjalan pada NVENC. Tone mapping tidak berjalan pada keduanya. Tone mapping adalah filter CUDA yang berjalan pada shader core, yaitu bagian GPU serbaguna yang juga menjalankan pekerjaan komputasi. Jadi, stream HDR 4K yang memerlukan tone mapping menggunakan decoder dan encoder, serta menambah beban pada shader.
Jellyfin mendokumentasikan tone mapping CUDA sebagai fitur yang tersedia pada setiap GPU NVIDIA yang dapat melakukan decode HEVC 10-bit. Artinya, kotak centang tersebut muncul dan dapat digunakan pada kartu yang tidak mampu mempertahankan kinerja pada 4K. Gejalanya adalah stream mulai berjalan, mengalami buffering, lalu tidak pernah stabil, sementara nvidia-smi melaporkan bahwa encoder hampir tidak sibuk.
Karena itu, beban shader perlu dipantau secara terpisah.
nvidia-smi dmon -s uPerintah tersebut mencetak satu baris setiap detik dengan kolom terpisah untuk sm, enc, dan dec. Nilai enc dan dec yang rendah diikuti nilai sm yang tinggi berarti blok fungsi tetap hanya bekerja ringan, sedangkan shader menjadi bottleneck. Dengan demikian, tone mapping, scaling, atau pembakaran subtitle ke dalam video adalah penyebab beban tersebut. Jalur CUDA juga menangani Dolby Vision profile 5 tanpa zero copy. Hal ini penting karena tanpa zero copy, frame dikirim ke system memory lalu dikembalikan di antara setiap tahap filter. Perjalanan bolak-balik tersebut menghabiskan bandwidth pada setiap frame.
Batas sesi NVENC konsumen sebenarnya membatasi apa
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
}
]Itu adalah angka dari matriks yang dipublikasikan NVIDIA per Agustus 2026, bukan hasil pengukuran di sini. Kartu GeForce dibatasi hingga 12 sesi encoding secara bersamaan, apa pun modelnya. Batas ini ditetapkan oleh driver, bukan oleh silikon, dan NVIDIA telah menaikkannya beberapa kali selama bertahun-tahun. Karena itu, gunakan matriks terbaru, bukan utas forum lama. Jumlah engine adalah hal yang benar-benar berbeda antar-kartu: GeForce RTX 5090 memiliki 3 engine NVENC, sedangkan GeForce RTX 4060 memiliki 1. Jumlah engine yang lebih banyak meningkatkan throughput encoding paralel, bukan batas jumlah sesi.
Batas ini menghitung sesi encoding, sehingga hanya menghitung stream transcoding. Direct play dan remuxing tidak pernah membuka sesi encoding. Kartu data center seperti L4 tercantum sebagai tidak dibatasi dalam matriks yang sama. GPU VPS biasanya menggunakan kartu data center, sehingga batas ini terutama menjadi perhatian untuk server rumahan.
Saat batas tersebut tercapai, transcoding gagal dan log FFmpeg memuat OpenEncodeSessionEx failed: out of memory (10). Pesan tersebut menyebut memori, tetapi penolakan karena batas sesi melaporkan kode yang sama. Karena itu, periksa jumlah stream yang berjalan secara bersamaan sebelum mencari kebocoran VRAM. Dalam praktiknya, sebagian besar pengguna mencapai batas tone mapping atau bandwidth upload jauh sebelum sesi kedua belas.
Buktikan GPU melakukan transcoding, jangan mempercayai konfigurasi
Pengaturan yang tersimpan bukan bukti. Putar file yang Anda ketahui pasti memaksa transcoding, lalu lakukan tiga pemeriksaan.
- Buka Dashboard, lalu Playback. Sesi aktif harus menyatakan Transcoding dan menyebutkan alasannya. Jika tertulis Direct playing, tidak ada transcoding yang berlangsung dan Anda sedang menguji file yang salah.
- Buka Dashboard, lalu Logs, dan buka log
FFmpeg.Transcodeterbaru. Transcoding perangkat keras menampilkan-hwaccel cudadan-hwaccel_output_format cudapada command line, denganh264_nvencatauhevc_nvencsebagai encoder. Jikalibx264terlihat di sana, berarti transcoding dilakukan oleh software, apa pun yang dinyatakan halaman pengaturan. - Jalankan
nvidia-smipada host selama pemutaran berlangsung. Proses dari/usr/lib/jellyfin-ffmpeg/ffmpegharus muncul dengan alokasi memori GPU, dannvidia-smi dmon -s uharus menampilkan nilai non-zero pada kolom enc dan dec.
Jalankan pemeriksaan ketiga pada host, bukan di dalam container. nvidia-smi di dalam container biasanya menampilkan daftar proses kosong karena tidak dapat melihat process ID dari luar namespace-nya sendiri, sedangkan angka utilisation tetap terbaca dengan benar. Daftar proses yang kosong di dalam container bukan merupakan kesalahan.
Saat beralih ke perangkat lunak tanpa memberi tahu Anda
Jellyfin memprioritaskan kelanjutan pemutaran. Jika jalur perangkat keras tidak tersedia, Jellyfin beralih ke perangkat lunak alih-alih menghentikan stream. Karena itu, indikator yang akurat adalah beban CPU dan log FFmpeg, bukan banner error.
Cannot load libnvcuvid.so.1 dalam log transcode berarti pustaka decoder tidak pernah dipasang ke dalam container. Tetapkan NVIDIA_DRIVER_CAPABILITIES=all lalu buat ulang container, karena perubahan environment memerlukan docker compose up -d untuk membuatnya ulang. Restart biasa tetap menggunakan pengaturan lama.
No capable devices found dari h264_nvenc berarti FFmpeg berhasil mencapai pustaka encoder, tetapi tidak menemukan kartu yang dapat digunakan. Periksa kembali docker compose exec jellyfin nvidia-smi, karena biasanya ini berarti reservasi perangkat telah dihapus atau container dibuat ulang dari file yang sudah usang.
CPU tinggi dengan GPU yang tidak banyak digunakan berarti sisi decoder gagal secara diam-diam. Hapus centang codec yang tidak dapat didekode oleh generasi perangkat Anda, lalu putar ulang file yang sama dan baca kembali log FFmpeg untuk melihat apakah -hwaccel cuda muncul.
Transcode yang mulai berjalan lalu berhenti pada 4K HDR, sementara 1080p berjalan normal, menunjukkan batas kemampuan tone mapping, bukan instalasi yang rusak. Konfirmasikan dengan kolom sm di nvidia-smi dmon -s u, lalu turunkan resolusi yang diminta client atau simpan file 4K HDR pada client yang mendukung direct play.
FAQ
Mengapa Jellyfin masih menggunakan CPU setelah saya mengaktifkan NVENC?
Periksa log FFmpeg.Transcode terbaru di Dashboard, lalu Logs. Jika log menampilkan libx264, tidak ada jalur hardware yang digunakan sama sekali. Biasanya, ini berarti container tidak dapat melihat GPU, jadi jalankan docker compose exec jellyfin nvidia-smi untuk memastikannya. Jika log menampilkan h264_nvenc tetapi CPU masih sibuk, bagian decode berjalan dalam software. Hal ini terjadi ketika Anda memilih codec yang tidak dapat di-decode oleh kartu grafis atau ketika Enable hardware encoding tetap dinonaktifkan sehingga hanya separuh pipeline yang dipindahkan ke GPU.
Apakah saya masih memerlukan baris runtime: nvidia di Docker Compose?
Tidak, jika Anda memiliki blok deploy.resources.reservations.devices dan Docker Compose versi terbaru. Blok tersebut adalah format permintaan device modern dan menjalankan fungsi yang sama. runtime: nvidia adalah jalur lama dari era nvidia-docker2. Jalur ini masih berfungsi, dan contoh yang dipublikasikan Jellyfin sendiri menyertakan keduanya. Menyertakan keduanya tidak bermasalah. Jika hanya menyertakan runtime: nvidia, Anda juga harus mempertahankan NVIDIA_VISIBLE_DEVICES=all, karena jalur tersebut tidak memiliki permintaan device untuk dibaca dan mengambil daftar device dari environment.
Berapa banyak stream yang dapat ditranscode secara bersamaan oleh satu GPU NVIDIA?
Matriks yang dipublikasikan NVIDIA membatasi kartu GeForce hingga dua belas sesi encode secara bersamaan per Agustus 2026, sedangkan kartu data center tercantum tanpa batas. Batas ini jarang menjadi faktor penghambat. Tone mapping HDR ke SDR berjalan pada shader core, bukan pada NVENC. Karena itu, beberapa stream 4K HDR akan menghabiskan shader jauh sebelum jumlah sesi menjadi masalah. Ukur kondisi Anda sendiri dengan nvidia-smi dmon -s u dan pantau kolom sm, bukan jumlah sesi.
Apakah saya dapat menggunakan hardware transcoding pada VPS tanpa GPU?
Tidak. Encoding memerlukan blok NVENC fisik, dan lspci -nn | grep -Ei "3d|display|vga" pada VPS standar hanya menampilkan display adapter virtual dari hypervisor. Pada paket tanpa GPU, solusi yang realistis adalah menghindari transcoding. Naikkan pengaturan kualitas client ke Auto, gunakan aplikasi client native alih-alih browser, dan ubah subtitle berbasis gambar menjadi teks agar tidak memaksa video di-encode ulang.
Mengapa 4K HDR tersendat ketika transcoding 1080p berjalan lancar?
Kedua beban kerja tersebut menggunakan bagian kartu yang berbeda. Transcoding 1080p SDR hanya melakukan decode dan encode, yang keduanya berjalan pada hardware dengan fungsi khusus. Stream 4K HDR menambahkan tone mapping, yaitu filter CUDA yang berjalan pada shader core, serta frame yang jauh lebih besar untuk di-scale. nvidia-smi dmon -s u yang menampilkan enc dan dec rendah di samping sm tinggi mengonfirmasi hal ini. Pola tersebut berarti blok dengan fungsi khusus sedang idle dan core serbaguna menjadi batasnya.