Dockerలో Jellyfin NVIDIA హార్డ్వేర్ ట్రాన్స్కోడింగ్
Docker Composeలో Jellyfinకు NVIDIA GPUను కేటాయించి NVENC, NVDECను ప్రారంభించండి. nvidia-smiతో GPU నిజంగా ట్రాన్స్కోడింగ్ చేస్తున్నదో నిర్ధారించండి.
మీరు నిర్మిస్తున్నది
NVIDIA GPUలో Jellyfin hardware transcoding ను స్థిరమైన క్రమంలో జరిగే 4 దశలుగా అమలు చేయాలి. వీటిలో చివరి దశ మాత్రమే Jellyfin లో జరుగుతుంది. Host driver లోడ్ చేయని GPUని container చూడలేడు. Container చూడలేని GPUని Jellyfin ఉపయోగించలేదు. ఈ క్రమంలో పని చేస్తే ప్రతి వైఫల్యానికి పరిశీలించాల్సిన స్థానం స్పష్టంగా ఉంటుంది.
- ముందుగా hostలో NVIDIA driverను install చేసి, తరువాత
nvidia-smiతో నిర్ధారించండి. - Docker GPUని containerకు అందించగలిగేలా NVIDIA Container Toolkitను install చేయండి.
docker-compose.ymlలో Jellyfin service కోసం GPUని కేటాయించి, తరువాత container దాన్ని చూస్తుందో లేదో నిర్ధారించండి.- Jellyfin యొక్క playback settingsలో NVENC మరియు NVDECను enable చేసి, నిజమైన playback వాటిని ఉపయోగిస్తుందో లేదో నిర్ధారించండి.
NVENC (NVIDIA encoder) మరియు NVDEC (NVIDIA decoder) cardలోని fixed-function blocks. CUDA (compute unified device architecture) పనిని నిర్వహించే shader coresకు ఇవి వేరు. ఈ విధానం ఉపయోగకరంగా ఉండటానికి ప్రధాన కారణం ఇదే: softwareలో అనేక CPU coresను వినియోగించే ఒక streamకు, GPUలోని dedicated hardware blockతో పాటు ఒక CPU coreలో చిన్న భాగం మాత్రమే అవసరం అవుతుంది.
ప్రతి transcode కంటే Direct play మెరుగైనది; కాబట్టి ముందుగా దానిని పరిశీలించండి
వీటిలో ఏదైనా configure చేయడానికి ముందు, సులభంగా తొలగించగల కారణం వల్ల మీరు transcoding చేస్తున్నారా తెలుసుకోండి. Client ఫైల్ను ఉన్న విధంగానే play చేయలేనప్పుడు Jellyfin transcode చేస్తుంది. కారణం సాధారణంగా ఈ కొద్దిపాటి జాబితాలో ఒకటి ఉంటుంది: video codec, audio codec, container format, image-based subtitles లేదా client కోరిన bitrate limit.
Dashboard తెరిచి, తరువాత Playback కు వెళ్లండి. ఏదైనా play అవుతున్నప్పుడు active session ను గమనించండి. Direct playing గా గుర్తించబడిన session ఫైల్ను ఎలాంటి మార్పు లేకుండా పంపుతుంది, దీనికి దాదాపు CPU అవసరం ఉండదు. Transcoding గా గుర్తించబడిన session లో Jellyfin ఎంచుకున్న కారణం కనిపిస్తుంది. ఆ కారణాన్ని తొలగిస్తే GPU అసలు పని చేయాల్సిన అవసరం ఉండదు.
రెండు మార్పులు ఎక్కువ transcodes ను తొలగిస్తాయి. Client app quality ని Auto లేదా గరిష్ఠ స్థాయికి సెట్ చేయండి. 4 Mbps కోరుతున్న client, ఫైల్లో ఏ codec ఉన్నా, 20 Mbps ఫైల్ను మళ్లీ encode చేయాల్సిందే. తరువాత browser tab బదులుగా native client app ను ఉపయోగించండి. మీరు ఉపయోగించే playerలలో browser అత్యంత పరిమితమైనది. అదే TVలోని native app ఒకే ఫైల్ను తరచుగా Direct play చేయగలదు.
Image-based subtitles విషయంలో ఏ client setting కూడా పరిష్కారం ఇవ్వదు. Blu-ray ripలోని PGS subtitles మరియు DVD ripలోని VOBSUB చిత్రాల రూపంలో ఉంటాయి. అందువల్ల వాటిని videoపైనే చిత్రించాలి. దీనికి video stream ను పూర్తిగా మళ్లీ encode చేయాలి. SRTలోని text subtitles ప్రత్యేక trackగా clientకు పంపబడతాయి, కాబట్టి వాటికి వనరుల వ్యయం ఉండదు. సాధ్యమైన చోట subtitle tracks ను textగా మార్చడం GPU కంటే ఎక్కువ ప్రయోజనకరం. Server వైపు మిగిలిన అంశాలు VPSలో Jellyfin media server నడిపే మార్గదర్శకంలో వివరించబడ్డాయి.
చాలా VPS ప్లాన్లలో GPU అసలు ఉండదు
ప్రామాణిక VPS ప్లాన్లలో GPU ఉండదు. మరేదైనా ప్రణాళిక రూపొందించే ముందు సర్వర్పై దీన్ని అమలు చేయండి.
lspci -nn | grep -Ei "3d|display|vga"సాధారణ KVM VPSలో ఇది hypervisor అందించే virtual display adapter ను చూపిస్తుంది లేదా ఉపయోగకరమైన ఏ సమాచారాన్నీ చూపించదు. ఆ device వీడియోను encode చేయలదు. provider మీ instance కు physical card ను pass through చేసినప్పుడు లేదా దానిలోని ఒక భాగాన్ని మీకు కేటాయించినప్పుడు మాత్రమే నిజమైన GPU కనిపిస్తుంది. అలాంటి ప్లాన్ల ధర కూడా దానికి అనుగుణంగానే ఉంటుంది. GPU VPS కోసం చెల్లించడం నిజంగా సమర్థించే workloads ఏవి ఎవరు GPU VPS తీసుకోవాలి, ఎవరు తీసుకోకూడదు అనే విషయాలను వివరిస్తుంది.
GPU లేకపోతే direct play ను లక్ష్యంగా పెట్టుకోండి. Software transcoding ను అరుదైన సందర్భంగా పరిగణించండి. ఒకే 1080p H.264 software transcode కొన్ని CPU cores పై భారంగా ఉన్నప్పటికీ నిర్వహించగలిగే స్థాయిలో ఉంటుంది. Tone mapping తో కూడిన 4K HDR software transcode ను చిన్న VPS real time లో పూర్తి చేయలదు. అందువల్ల CPU 100 percent వినియోగంలో స్థిరంగా ఉన్నప్పుడు stream stutter అవుతుంది.
హోస్ట్లో NVIDIA driver ఇన్స్టాల్ చేయండి
Linuxలో Jellyfin 10.11 కోసం కనీస NVIDIA driver వెర్షన్ 520.56.06 అని documentation పేర్కొంటుంది. Ubuntu మీకు సరిపోలే package ను ఎంచుకునే helper ను అందిస్తుంది.
sudo ubuntu-drivers list --gpgpu
sudo ubuntu-drivers install --gpgpu
sudo reboot--gpgpu driver యొక్క headless server flavour ను ఎంచుకుంటుంది. Desktop లేని media server కు ఇదే అవసరం. list command మీకు అందుబాటులో ఉన్న branches ను చూపిస్తుంది. ఉదాహరణకు sudo ubuntu-drivers install --gpgpu nvidia:570-server వంటి branch ను పేరుతో ఎంచుకోవచ్చు. ఇక్కడ చూపించిన branch ను కాకుండా, list command వాస్తవంగా చూపించిన branch ను ఉపయోగించండి.
Server flavour ఎల్లప్పుడూ nvidia-smi ను install చేయదు. మీరు ఎంచుకున్న branch కు సరిపోలే utils package ను install చేయండి. ఉదాహరణకు sudo apt install nvidia-utils-570-server. తరువాత driver ను తనిఖీ చేయండి.
nvidia-smiసరైన ఫలితంలో header లో driver version మరియు CUDA version ఉన్న table కనిపిస్తుంది. మీ card పేరు ద్వారా జాబితాలో కనిపిస్తుంది. Process list ఖాళీగా ఉంటుంది. ఇక్కడ రెండు సమస్యలు సాధారణంగా కనిపిస్తాయి. nvidia-smi: command not found అంటే utils package లేదు, driver లో సమస్య లేదని అర్థం. NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver అంటే kernel module load కాలేదని అర్థం. కొత్త install తర్వాత దీనికి సాధారణ కారణం మీరు ఇంకా reboot చేయకపోవడం లేదా Secure Boot unsigned module ను load చేయకుండా నిరోధించడం. Module ఉందో లేదో lsmod | grep nvidia తో నిర్ధారించండి.
NVIDIA Container Toolkit ఇన్స్టాల్ చేయండి
డ్రైవర్ వల్ల host GPUను ఉపయోగించగలుగుతుంది. అయితే Docker దాన్ని containerలోకి పంపదు, ఎందుకంటే containerలో device nodes లేదా driver libraries ఉండవు. Container ప్రారంభమైనప్పుడు ఈ రెండింటినీ అందించేది NVIDIA Container Toolkit. ఇవి Debian మరియు Ubuntu కోసం NVIDIA అందించే అధికారిక installation commands.
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-toolkitPackageని ఇన్స్టాల్ చేయడం మాత్రమే సరిపోదు. Runtime అందుబాటులో ఉందని Dockerకు తెలియజేయాలి.
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockernvidia-ctk runtime configure, /etc/docker/daemon.jsonలో nvidia runtime entryని రాస్తుంది. Restart చేయడం చాలా మంది వదిలేసే దశ. దీన్ని వదిలేస్తే ఈ మొత్తం setupలో అత్యంత సాధారణ error వస్తుంది. Jellyfinను తాకేముందు plumbingను పరీక్షించండి.
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smiఇది hostలో చూపిన అదే tableను చూపాలి. బదులుగా unable to select a device driver with gpu capabilities అనే error వస్తే, Docker daemonకు nvidia runtime గురించి తెలియదని అర్థం. అందువల్ల configure commandను మళ్లీ run చేసి daemonను restart చేయండి.
Docker Composeలో Jellyfin container కు GPU అందించండి
ఇది ఆధునిక Compose రూపం. 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]దీన్ని ప్రారంభించి, container ను నేరుగా ప్రశ్నించండి.
docker compose up -d
docker compose exec jellyfin nvidia-smiఇది container లోపల driver పట్టికను చూపిస్తే, GPU సరిగ్గా pass through అయింది. మిగిలిన ప్రతి సమస్య Jellyfin setting వల్లే ఉంటుంది.
ఆ file లోని నాలుగు lines కు వివరణ అవసరం. capabilities: [gpu] ను Compose స్వయంగా కోరుతుంది. దీన్ని వదిలేస్తే, GPU లేకుండా service ను ప్రారంభించకుండా Compose దాన్ని తిరస్కరిస్తుంది. NVIDIA_DRIVER_CAPABILITIES=all ముఖ్యమైనది. video capability అభ్యర్థించినప్పుడే toolkit video libraries ను container లోకి mount చేస్తుంది. అధికారిక image కోసం ఈ variable అవసరమని Jellyfin documentation పేర్కొంటుంది. ఇది లేకపోతే CUDA పనిచేస్తుంది, కానీ NVDEC పనిచేయదు. Transcode log లో Cannot load libnvcuvid.so.1 కనిపిస్తుంది. network_mode: host ను Jellyfin స్వంత ఉదాహరణ ఉపయోగిస్తుంది. Bridge network లో UDP port 7359 ద్వారా client auto-discovery పనిచేయదు.
user: 1000:1000 చివరిది. దీనికి GPUతో సంబంధం లేదు. మీ media mount లో Jellyfin ఏ files ను చదవగలదో ఇది నిర్ణయిస్తుంది. ఇక్కడ mismatch ఉంటే permissions error బదులుగా library ఖాళీగా కనిపిస్తుంది. PUID మరియు PGID container user ను disk లోని files కు ఎలా అనుసంధానిస్తాయో numbering ను వివరిస్తుంది. దీనికి ఉపయోగించే numbering, దీనితో పాటు Docker Compose లో Sonarr మరియు Radarr stack ను నడిపేటప్పుడు మీరు ఇప్పటికే సెట్ చేసినదే.
చాలా ట్యుటోరియల్స్ ఇప్పటికీ runtime: nvidia అని ఎందుకు రాస్తాయి
మీరు చూసే దాదాపు ప్రతి గైడ్లో పాత రూపం కనిపిస్తుంది. అది తప్పు కాదు. దానికి చారిత్రక కారణం ఉంది. అసలు nvidia-docker2 ప్యాకేజీ nvidia పేరుతో OCI runtime ను నమోదు చేసేది. అందువల్ల container లోకి GPU ను అందించడానికి --runtime=nvidia తో పాటు NVIDIA_VISIBLE_DEVICES మాత్రమే ఉపయోగించాల్సి వచ్చేది. Docker 19.03 లో --gpus flag మరియు సరైన device-request API చేర్చబడ్డాయి. Compose దీనికి అనుగుణంగా మారడానికి మరింత సమయం పట్టింది. మారినప్పుడు device request ను deploy.resources.reservations.devices కింద చేర్చారు. చాలామంది దీనిని పట్టించుకోకుండా నేర్చుకున్నారు, ఎందుకంటే గతంలో deploy అంటే Docker Swarm అని అర్థం.
దీని ఫలితంగా ప్రస్తుతం రెండు రూపాలూ పనిచేస్తున్నాయి. Jellyfin ప్రచురించిన ఉదాహరణలో రెండూ ఒకేసారి ఉన్నాయి. runtime: nvidia ను ఉంచడం వల్ల అదనపు ఖర్చు ఏదీ ఉండదు. పాత Compose versions లో కూడా file పనిచేస్తుంది. మీరు runtime: nvidia ను మాత్రమే ఉంచి deploy block ను తొలగిస్తే, NVIDIA_VISIBLE_DEVICES=all ను తప్పక ఉంచాలి. కారణం, ఆ legacy మార్గం ఏ devices ను inject చేయాలో నిర్ణయించడానికి environment variable ను చదువుతుంది. దానికి బదులుగా చదవడానికి device request ఉండదు.
Jellyfinలో NVIDIA hardware transcodingను ప్రారంభించండి
ఇప్పటివరకు Jellyfin cardను ఉపయోగించాలని ఏ సెట్టింగ్ కూడా నిర్దేశించలేదు. Dashboard కు వెళ్లి, తర్వాత Playback, ఆపై Transcoding ఎంచుకోండి. Hardware accelerationను Nvidia NVENCగా సెట్ చేయండి. Enable hardware encodingను ఎంచుకోండి. లేకపోతే Jellyfin GPUపై decode చేసి, CPUపై encode చేస్తుంది. అప్పుడు GPU activity కనిపిస్తుంది, కానీ CPUపై ఇంకా అధిక భారం ఉంటుంది. ఇది గందరగోళానికి దారితీసే మధ్యస్థ స్థితి.
Enhanced NVDEC decoderను ప్రారంభిస్తే, ప్రస్తుత NVDEC మార్గం మరియు పాత CUVID మార్గం మధ్య decoder మారుతుంది. దీన్ని ప్రారంభంగానే ఉంచండి. Dolby Visionను నిర్వహించడానికి NVDECను ఉపయోగించాలంటే ఇది తప్పనిసరిగా ప్రారంభించి ఉండాలి.
Enable hardware decoding for కింద మీ card నిజంగా decode చేయగల codecsను మాత్రమే ఎంచుకోండి. చాలామంది తప్పు చేసే సెట్టింగ్ ఇదే. AV1 decoder లేని cardలో AV1ను ఎంచుకున్నా error message కనిపించదు. Jellyfin hardware decodeను అభ్యర్థిస్తుంది, కానీ అది అందకపోతే softwareలో decodingకు మారుతుంది. ఫలితంగా CPU వినియోగం ఎక్కువగా, GPU దాదాపు idleగా ఉంటుంది. Passthrough అసలు పనిచేయలేదనిపించడానికి ఇదే కారణం కావచ్చు.
మొత్తం పేజీకి మరో పరిమితి వర్తిస్తుంది: bundled jellyfin-ffmpeg buildతో మాత్రమే hardware acceleration పనిచేస్తుంది. FFmpeg pathను system FFmpegకు సూచిస్తే, acceleration కొంతవరకు మాత్రమే పనిచేయవచ్చు లేదా అసలు పనిచేయకపోవచ్చు.
మీ GPU తరానికి ఏ codecs decode మరియు encode చేయగలవు
ఇవి NVENC మరియు NVDEC కోసం Jellyfin పేర్కొన్న పరిమితులు. Decode మరియు encode వేర్వేరు సామర్థ్యాలు. ఒక card కు వీటిలో ఒకటి మాత్రమే ఉండవచ్చు.
- H.264 8-bit: NVENC మరియు NVDEC కలిగిన ప్రతి NVIDIA GPU దీనిని decode మరియు encode చేయగలదు.
- HEVC 8-bit: Maxwell second generation (GM206) మరియు ఆ తరువాతి తరాల నుంచి decode మరియు encode అందుబాటులో ఉన్నాయి.
- HEVC 10-bit: Maxwell second generation మరియు ఆ తరువాతి తరాల నుంచి decode అందుబాటులో ఉంది. అయితే encode మాత్రం Pascal మరియు ఆ తరువాతి తరాల నుంచి మాత్రమే అందుబాటులో ఉంది.
- AV1: Ampere మరియు ఆ తరువాతి తరాల నుంచి decode అందుబాటులో ఉంది. Ada Lovelace మరియు ఆ తరువాతి తరాల నుంచి మాత్రమే encode అందుబాటులో ఉంది.
ఆచరణలో ఎక్కువ సమస్య కలిగించేది HEVC 10-bit లోని ఈ తేడా. Maxwell కాలం నాటి card మీ 4K HDR file ను GPU పై decode చేస్తుంది. కానీ 10-bit output ను encode చేయలేకపోతుంది. అందువల్ల Jellyfin బదులుగా 8-bit H.264 ను encode చేస్తుంది. అది ఇప్పటికీ సరిగ్గా play అవుతుంది. చాలా clients కోసం ఇదే సరైన ఎంపిక. 2026లో మీ card ఏదైనా AV1 encode సాధారణంగా అవసరం ఉండదు. Client వైపు AV1 decode support ఇప్పటికీ పరిమితంగానే ఉంది. ఇప్పటికే సమస్య ఎదుర్కొంటున్న client కు stream అందించడానికే transcode ఉపయోగించాల్సి వస్తుంది.
Tone mapping GPUని మళ్లీ నిశ్శబ్దంగా ఎందుకు పూర్తిగా వినియోగిస్తుంది
HDR (high dynamic range) నుంచి SDR (standard dynamic range) కు tone mapping చేయడం మీ GPU సామర్థ్యాన్ని తగ్గించే setting. దీనికి కారణం దాని నిర్మాణం. Decode పని NVDECపై జరుగుతుంది. Encode పని NVENCపై జరుగుతుంది. Tone mapping మాత్రం ఈ రెండింటిపైనా జరగదు. ఇది shader coresపై అమలయ్యే CUDA filter. అదే GPUలో compute పనిని నిర్వహించే general-purpose భాగం. అందువల్ల tone mapping అవసరమైన 4K HDR stream decoder, encoder రెండింటినీ ఉపయోగించడంతో పాటు shadersపై కూడా అదనపు load పెడుతుంది.
HEVC 10-bit ను decode చేయగల ప్రతి NVIDIA GPUలో CUDA tone mapping అందుబాటులో ఉంటుందని Jellyfin documentation పేర్కొంటుంది. అంటే 4K వద్ద దాన్ని నిరంతరం నిర్వహించలేని cardsలో కూడా ఆ checkbox కనిపించి పనిచేస్తుంది. దీని లక్షణం ఏమిటంటే stream ప్రారంభమై, buffer అయి, ఎప్పటికీ స్థిరపడదు. అదే సమయంలో nvidia-smi encoderపై చాలా తక్కువ load ఉందని చూపిస్తుంది.
అందుకే shader load ను విడిగా monitor చేయాలి.
nvidia-smi dmon -s uఇది ప్రతి సెకనుకు ఒక line ను ప్రింట్ చేస్తుంది. అందులో sm, enc, dec కోసం వేర్వేరు columns ఉంటాయి. అధిక sm విలువతో పాటు enc మరియు dec విలువలు తక్కువగా ఉంటే fixed-function blocks తక్కువ పనితో నడుస్తున్నాయని, bottleneck shaders అని అర్థం. కాబట్టి మీ GPU సమయం tone mapping, scaling లేదా subtitle burn-in వల్ల ఖర్చవుతోంది. CUDA path Dolby Vision profile 5 ను zero copy తో కూడా నిర్వహిస్తుంది. ఇది ముఖ్యమైన విషయం. zero copy లేకపోతే filter steps మధ్య frames system memoryకి బయటకు వెళ్లి తిరిగి రావాలి. ప్రతి frameకు జరిగే ఈ round trip bandwidthను వినియోగిస్తుంది.
consumer NVENC session పరిమితి వాస్తవంగా ఏది నియంత్రిస్తుంది
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
}
]ఇవి August 2026 నాటికి NVIDIA ప్రచురించిన matrix గణాంకాలు. ఇవి ఇక్కడ తీసిన కొలతలు కావు. ఏ model అయినా GeForce card గరిష్ఠంగా 12 ఏకకాల encode sessions కు పరిమితం అవుతుంది. ఈ పరిమితి silicon లో కాకుండా driver లో ఉంటుంది. NVIDIA గతంలో దీనిని ఒకటికి మించిన సార్లు పెంచింది. అందువల్ల పాత forum thread ను కాకుండా ప్రస్తుత matrix ను పరిశీలించండి. Card ను బట్టి నిజంగా మారేది engine count: GeForce RTX 5090 లో 3 NVENC engines ఉంటే, GeForce RTX 4060 లో 1 ఉంటాయి. ఎక్కువ engines అంటే ఎక్కువ parallel encode throughput. session ceiling మాత్రం పెరగదు.
ఈ పరిమితి encode sessions ను లెక్కిస్తుంది. అందువల్ల transcoding streams మాత్రమే ఇందులోకి వస్తాయి. Direct play మరియు remuxing ఎప్పుడూ encode session ను ప్రారంభించవు. అదే matrix లో L4 వంటి data center cards కు పరిమితి లేదని చూపిస్తారు. GPU VPS plan సాధారణంగా data center card ను అందిస్తుంది. కాబట్టి ఈ పరిమితి ప్రధానంగా home server సమస్య.
ఈ పరిమితిని చేరుకున్నప్పుడు transcode విఫలమవుతుంది. FFmpeg log లో OpenEncodeSessionEx failed: out of memory (10) కనిపిస్తుంది. ఆ message memory ను సూచిస్తుంది. అయితే session-limit refusal కూడా అదే code ను చూపిస్తుంది. కాబట్టి VRAM leak కోసం వెతకడానికి ముందు ఏకకాల stream count ను తనిఖీ చేయండి. ఆచరణలో చాలామంది session twelve కు ముందే tone-mapping ceiling లేదా upload bandwidth పరిమితిని ఎదుర్కొంటారు.
GPU transcoding జరుగుతోందని నిర్ధారించండి; config పై మాత్రమే ఆధారపడవద్దు
సేవ్ చేసిన setting ఆధారం కాదు. Transcode తప్పనిసరిగా జరిగేలా చేసే file ను ప్లే చేసి, తరువాత మూడు తనిఖీలు నిర్వహించండి.
- Dashboard తెరిచి, తరువాత Playback కు వెళ్లండి. Active session లో Transcoding అని కనిపించాలి. అలాగే కారణం కూడా చూపాలి. Direct playing అని కనిపిస్తే ఏదీ transcode కావడం లేదు. మీరు తప్పు file ను పరీక్షిస్తున్నారు.
- Dashboard తెరిచి, తరువాత Logs కు వెళ్లి, తాజా
FFmpeg.Transcodelog ను తెరవండి. Hardware transcode సమయంలో command line లో-hwaccel cudaమరియు-hwaccel_output_format cudaకనిపించాలి. Encoder గాh264_nvencలేదాhevc_nvencకనిపించాలి. అక్కడlibx264కనిపిస్తే settings page ఏమి చెప్పినా మీరు software లో transcoding చేస్తున్నారు. - Playback కొనసాగుతున్నప్పుడు host పై
nvidia-smiఅమలు చేయండి./usr/lib/jellyfin-ffmpeg/ffmpegనుంచి వచ్చిన process GPU memory ను ఉపయోగిస్తున్నట్లు కనిపించాలి. అలాగేnvidia-smi dmon -s uలో enc మరియు dec columns విలువలు non-zero గా ఉండాలి.
మూడో తనిఖీని container లో కాకుండా host పై అమలు చేయండి. Container లోని nvidia-smi సాధారణంగా ఖాళీ process list ను చూపుతుంది. కారణం, container తన namespace వెలుపల ఉన్న process IDs ను చూడలేకపోవడం. అయితే utilisation సంఖ్యలు సరిగ్గానే కనిపించవచ్చు. Container లో process list ఖాళీగా ఉండటం లోపం కాదు.
ఇది మీకు తెలియకుండానే software fallback కు మారినప్పుడు
Jellyfin ప్లేబ్యాక్ను కొనసాగించడానికే ప్రాధాన్యం ఇస్తుంది. hardware path అందుబాటులో లేకపోతే stream విఫలమయ్యే బదులు software కు మారుతుంది. అందువల్ల నిజమైన సూచన error banner కాదు; CPU load మరియు FFmpeg log ను పరిశీలించాలి.
Transcode log లో Cannot load libnvcuvid.so.1 కనిపిస్తే decoder library container లోకి mount కాలేదని అర్థం. NVIDIA_DRIVER_CAPABILITIES=all సెట్ చేసి container ను మళ్లీ సృష్టించండి. Environment మార్పు అమలులోకి రావడానికి docker compose up -d అవసరం. సాధారణ restart పాత settings నే ఉంచుతుంది.
h264_nvenc నుంచి వచ్చిన No capable devices found సందేశం FFmpeg encoder library వరకు చేరిందని, కానీ ఉపయోగించగల card ఏదీ కనుగొనలేదని సూచిస్తుంది. docker compose exec jellyfin nvidia-smi ను మళ్లీ తనిఖీ చేయండి. సాధారణంగా device reservation తొలగించబడటం లేదా stale file ఆధారంగా container మళ్లీ సృష్టించబడటం దీనికి కారణం.
GPU వినియోగం తక్కువగా ఉండగా CPU వినియోగం ఎక్కువగా ఉంటే decode భాగం నిశ్శబ్దంగా విఫలమవుతున్నదని అర్థం. మీ generation decode చేయలేని codecs ఎంపికను తొలగించండి. తరువాత అదే file ను మళ్లీ ప్లే చేసి, -hwaccel cuda కనిపిస్తుందో లేదో తెలుసుకోవడానికి FFmpeg log ను మళ్లీ పరిశీలించండి.
1080p సరిగ్గా పనిచేస్తూ 4K HDR పై transcode ప్రారంభమై ఆగిపోతే అది పాడైన install సమస్య కాదు; tone-mapping పరిమితి. nvidia-smi dmon -s u లోని sm column ద్వారా దీనిని నిర్ధారించండి. తరువాత client కోరే resolution ను తగ్గించండి లేదా 4K HDR files ను direct play చేయగల clients లోనే ఉంచండి.
FAQ
Jellyfin లో NVENC ప్రారంభించిన తర్వాత కూడా CPU ఎందుకు ఉపయోగించబడుతోంది?
Dashboard, తరువాత Logs కింద ఉన్న తాజా FFmpeg.Transcode log ను పరిశీలించండి. అందులో libx264 కనిపిస్తే hardware path అసలు ఉపయోగించబడలేదు. సాధారణంగా container కు GPU కనిపించడం లేదని దీని అర్థం. నిర్ధారించడానికి docker compose exec jellyfin nvidia-smi అమలు చేయండి. అందులో h264_nvenc కనిపించినా CPU ఇంకా అధికంగా పనిచేస్తే, decode భాగం softwareలో నడుస్తోంది. మీ card decode చేయలేని codec ను ఎంచుకున్నప్పుడు లేదా Enable hardware encoding ఎంపికను నిలిపివేసినప్పుడు ఇది జరుగుతుంది. అప్పుడు pipelineలో సగం మాత్రమే GPUకి మారుతుంది.
Docker Composeలో నాకు ఇంకా runtime: nvidia line అవసరమా?
మీ వద్ద deploy.resources.reservations.devices block మరియు ప్రస్తుత Docker Compose ఉంటే అవసరం లేదు. ఈ block ఆధునిక device-request విధానం. ఇది అదే పని చేస్తుంది. runtime: nvidia అనేది nvidia-docker2 కాలానికి చెందిన పాత విధానం. ఇది ఇప్పటికీ పనిచేస్తుంది. Jellyfin స్వయంగా ప్రచురించిన ఉదాహరణలో రెండింటినీ ఉంచింది. రెండింటినీ ఉంచడం వల్ల సమస్య ఉండదు. runtime: nvidia మాత్రమే ఉంచితే NVIDIA_VISIBLE_DEVICES=all ను కూడా ఉంచాలి. ఆ విధానంలో device request ఉండదు. అందువల్ల device list ను environment నుంచి తీసుకుంటుంది.
ఒక NVIDIA GPU ఒకేసారి ఎన్ని streams ను transcode చేయగలదు?
NVIDIA ప్రచురించిన matrix ప్రకారం August 2026 నాటికి GeForce cards కు ఒకేసారి పన్నెండు encode sessions పరిమితి ఉంది. Data center cards కు పరిమితి లేదని అందులో పేర్కొన్నారు. సాధారణంగా ఈ పరిమితి మీకు ప్రధాన అడ్డంకి కాదు. HDR నుంచి SDR కు tone mapping NVENCపై కాకుండా shader cores పై నడుస్తుంది. అందువల్ల session counter పరిమితిని చేరకముందే కొన్ని 4K HDR streams shader cores ను పూర్తిగా వినియోగించవచ్చు. మీ పరిస్థితిని nvidia-smi dmon -s u తో కొలవండి. Session count కు బదులుగా sm column ను పరిశీలించండి.
GPU లేని VPSలో hardware transcoding ఉపయోగించవచ్చా?
లేదు. Encoding కు physical NVENC block అవసరం. Standard VPSలో lspci -nn | grep -Ei "3d|display|vga" hypervisor అందించే virtual display adapter ను మాత్రమే చూపిస్తుంది. GPU లేని planలో అనుసరించగల వాస్తవిక మార్గం transcodes ను తొలగించడం. Client quality setting ను Autoకు పెంచండి. Browserకు బదులుగా native client app ఉపయోగించండి. Image-based subtitle tracks ను textకు మార్చండి. అప్పుడు అవి video re-encode ను బలవంతం చేయవు.
1080p transcoding సరిగ్గా పనిచేసినా 4K HDR ఎందుకు stutter అవుతుంది?
ఈ రెండు workloads cardలోని వేర్వేరు భాగాలను ఉపయోగిస్తాయి. 1080p SDR transcodeలో decode మరియు encode మాత్రమే ఉంటాయి. ఇవి రెండూ fixed-function hardwareపై నడుస్తాయి. 4K HDR streamలో tone mapping అదనంగా ఉంటుంది. ఇది shader coresపై నడిచే CUDA filter. అలాగే scale చేయాల్సిన frame పరిమాణం కూడా చాలా పెద్దగా ఉంటుంది. nvidia-smi dmon -s u లో enc మరియు dec తక్కువగా, sm ఎక్కువగా కనిపిస్తే కారణం నిర్ధారించవచ్చు. ఈ pattern fixed-function blocks idleగా ఉన్నాయని, general-purpose cores పరిమితిగా మారాయని సూచిస్తుంది.