Jellyfin fa buffering quando una parte del percorso di riproduzione non riesce a fornire, convertire o decodificare il video più velocemente dell'avanzamento della timeline. La transcodifica video è una causa comune, ma non l'unica. Un flusso può bloccarsi anche a causa di limiti del codec client, elaborazione dei sottotitoli, Wi-Fi instabile, larghezza di banda di upload remota insufficiente, contesa di archiviazione o una directory di transcodifica che non può accettare più dati temporanei.
Il modo più veloce per trovare il collo di bottiglia è controllare la modalità di riproduzione attuale prima di modificare le impostazioni hardware. Poi confronta se il problema riguarda ogni file, solo media 4K o HDR, un singolo client, utenti remoti, riproduzione con sottotitoli abilitati o più flussi simultanei.
Controlla la Modalità di Riproduzione Prima di Modificare Qualcosa
Apri la Dashboard di Jellyfin mentre il video interessato è in riproduzione e controlla la sessione attiva. Questo permette di stabilire se il server sta inviando il file originale o sta convertendo attivamente una parte di esso.
Jellyfin separa la riproduzione in quattro percorsi di riproduzione con carico progressivamente maggiore sul server: Riproduzione Diretta, Remux, Streaming Diretto e Transcodifica video. La Riproduzione Diretta invia il file originale con quasi nessuna elaborazione. Il Remux cambia il contenitore, lo Streaming Diretto converte l'audio mantenendo il video, e la Transcodifica ricodifica il flusso video.
Questo primo risultato cambia completamente la direzione della risoluzione dei problemi. Se la riproduzione diretta fa buffering, inizia con rete, archiviazione, client e file multimediale. Se la transcodifica video fa buffering, verifica perché è stata richiesta la conversione e se il server può completare rapidamente l'intera pipeline.
| Modalità di Riproduzione | Cosa Sta Facendo il Server | Controlla Prima |
| Riproduzione Diretta | Invio del file originale | Rete, decodifica client, archiviazione, file |
| Remux | Modifica del contenitore | Compatibilità del contenitore e archiviazione temporanea |
| Streaming Diretto | Conversione audio mantenendo il video | Codec audio, configurazione canali, supporto client |
| Transcodifica Video | Decodifica e ricodifica video | CPU, GPU, sottotitoli, HDR, percorso di transcodifica |
| Errore di Riproduzione | Conversione o consegna fallita | Log FFmpeg, permessi, spazio libero |
Scopri Perché Jellyfin Ha Richiesto una Transcodifica
Un file non viene riprodotto direttamente solo perché il client supporta il suo codec video. Jellyfin valuta la combinazione completa di contenitore, codec video, profilo codec, profondità di bit, risoluzione, formato audio, configurazione dei canali, sottotitoli, bitrate e vincoli di riproduzione del client.
Ad esempio, il client può supportare il video HEVC ma non la traccia audio TrueHD inclusa. Un altro client può decodificare entrambi i flussi ma non riuscire a visualizzare il formato sottotitoli selezionato. Queste differenze possono trasformare lo stesso file in Direct Play su un dispositivo, conversione audio su un altro e transcodifica video completa in un browser.
Registra il motivo della riproduzione prima di modificare le impostazioni. Prova anche un'altra traccia audio, disabilita i sottotitoli e riproduci lo stesso file su un altro client Jellyfin. Questi test controllati sono più utili che abilitare tutte le caselle codec nel menu di transcodifica.
La transcodifica software può sovraccaricare un server di piccole dimensioni
La transcodifica software utilizza la CPU per decodificare la sorgente, applicare filtri, ridimensionare l'immagine e codificare un nuovo flusso in tempo reale. Un processore a bassa potenza può gestire una conversione 1080p ma fallire con sorgenti 4K HEVC, video a 10 bit o HDR.
Quando la conversione non riesce a rimanere avanti rispetto alla riproduzione, il client consuma infine i segmenti video memorizzati nel buffer e si mette in pausa. L'utilizzo della CPU può rimanere vicino al massimo mentre Jellyfin tenta ripetutamente di costruire abbastanza dati in anticipo rispetto alla posizione corrente.
Se il server dispone di una GPU integrata o discreta supportata, l'accelerazione hardware configurata correttamente è solitamente più utile che modificare il numero di thread di FFmpeg. Se il server non ha un codificatore compatibile, ridurre la risoluzione o il bitrate richiesti può confermare che la capacità di transcodifica è il fattore limitante.
L'accelerazione hardware è una pipeline a più fasi
Selezionare Intel Quick Sync, VA-API, NVIDIA NVENC o AMD AMF nel Dashboard non garantisce che ogni parte della conversione venga eseguita sulla GPU.
Una transcodifica Jellyfin può includere decodifica, deinterlacciamento, ridimensionamento, conversione di formato, mappatura del tono HDR, sovrapposizione dei sottotitoli e codifica. Jellyfin segnala che alcune fasi possono rimanere sulla CPU a causa di limitazioni hardware, driver o software. L'accelerazione parziale può quindi produrre un alto utilizzo della CPU anche quando è visibile l'attività della GPU.
Verifica l'intero processo piuttosto che la sola presenza di una GPU. Forza una transcodifica prevedibile, osserva i motori di decodifica e codifica video, controlla il comando FFmpeg e cerca filtri che sono ricaduti sul software.
Non abilitare i formati di decodifica che la tua GPU non può gestire
La pagina di accelerazione hardware permette agli amministratori di selezionare i formati video che Jellyfin può tentare di decodificare tramite la GPU. Abilitare un formato non supportato non aggiunge quella capacità all'hardware.
Se la GPU non può decodificare il profilo codec esatto o la profondità di bit, Jellyfin potrebbe ricorrere alla decodifica software o non riuscire a inizializzare il percorso hardware. Per questo un file HEVC può funzionare mentre un altro causa un uso della CPU inaspettatamente elevato.
Confermare la generazione della GPU e i profili supportati, quindi abilitare solo i formati che può effettivamente elaborare. Testare separatamente file H.264 ordinari, HEVC Main 10 e HDR invece di considerare tutti i media 4K come un unico carico di lavoro.
Docker deve avere accesso alla GPU
Una GPU rilevata dal sistema operativo host non è automaticamente disponibile all'interno di un container Jellyfin. Il container necessita anche della corretta mappatura del dispositivo, runtime, driver, gruppi e permessi.
Per GPU Intel e AMD su Linux, l'host espone comunemente i dispositivi di rendering sotto /dev/dri. L'utente del container deve poter accedere al dispositivo di rendering pertinente. Le configurazioni NVIDIA richiedono il driver host e un runtime container appropriato. Controlli pratici di Docker includono verificare il dispositivo di rendering, mappandolo nel container e aggiungendo il corretto GID del gruppo di rendering.
Non lasciare il container in modalità privilegiata come soluzione permanente. Può essere usata brevemente per confermare che il problema sottostante è l'accesso al dispositivo, ma la distribuzione finale dovrebbe esporre solo le risorse e i permessi GPU necessari.
Verificare l'attività GPU durante una transcodifica reale
L'avvio riuscito di un container non dimostra che la transcodifica hardware funzioni. Jellyfin può funzionare normalmente, scansionare la libreria e riprodurre file in Direct Play senza avere accesso utilizzabile alla GPU.
Forzare una transcodifica scegliendo temporaneamente una qualità client inferiore rispetto alla sorgente. Nei sistemi Intel, monitorare i motori video con uno strumento come intel_gpu_top. Nei sistemi NVIDIA, ispezionare i processi attivi e l'attività dell'encoder tramite nvidia-smi. Controllare anche se l'uso della CPU diminuisce rispetto alla transcodifica software.
Se non c'è attività GPU, confermare il dispositivo mappato, l'utente del container, l'appartenenza al gruppo di rendering, il metodo di accelerazione hardware e il log di FFmpeg. Se la GPU è attiva ma la riproduzione rimane lenta, un'altra fase della pipeline potrebbe ancora essere eseguita in software.
I sottotitoli possono innescare una transcodifica video completa
Un sintomo comune è la riproduzione fluida fino a quando i sottotitoli sono abilitati. Questo accade spesso con sottotitoli basati su immagini o formati stilizzati che il client selezionato non può rendere direttamente.
Quando Jellyfin deve incorporare i sottotitoli nell'immagine, decodifica ogni frame, rende il livello dei sottotitoli e codifica un nuovo flusso video. Questo può trasformare una sessione Direct Play altrimenti a basso carico in uno dei percorsi di riproduzione più costosi per il server.
Disabilita i sottotitoli e riproduci la stessa scena. Se il buffering scompare, prova una traccia di sottotitoli basata su testo come SRT, testa un altro client o verifica se il percorso hardware selezionato può accelerare le operazioni di decodifica, filtraggio e codifica circostanti.
Il tone mapping HDR può essere più esigente della transcodifica normale
Se i media 1080p e 4K SDR ordinari vengono riprodotti correttamente ma i contenuti HDR fanno buffering su un client SDR, il tone mapping è un candidato probabile.
Il server potrebbe dover decodificare una sorgente HDR a 10 bit, convertire il suo intervallo di colore e luminosità per SDR, scalarlo e codificare un nuovo flusso video. Un sistema capace di transcodifica H.264 normale potrebbe comunque non essere in grado di eseguire quel carico completo in tempo reale tramite software.
Testa lo stesso file HDR su un client compatibile HDR, poi forza una transcodifica SDR e confronta l'attività di CPU e GPU. Il supporto hardware per la decodifica HEVC non dimostra automaticamente che il metodo di tone-mapping selezionato sia completamente accelerato.
Il client determina gran parte del percorso di riproduzione
Jellyfin può eseguire Direct Play di un file in un client desktop mentre lo transcodifica in un'applicazione browser o televisiva. Questa differenza non significa che la configurazione del server sia cambiata tra le sessioni.
Ogni client segnala i codec, i contenitori, i formati audio, i sottotitoli, le risoluzioni e i limiti di bitrate supportati. Un lettore più capace può evitare la conversione, mentre un lettore limitato potrebbe richiedere la conversione audio, il remuxing o la completa transcodifica video.
Testa lo stesso file, traccia audio, traccia sottotitoli e connessione di rete su due client. Se il problema segue un client, indaga sulle capacità di riproduzione di quel dispositivo e sulle impostazioni dell'app prima di modificare il server.
Direct Play può ancora causare buffering
Direct Play elimina la conversione video come principale collo di bottiglia, ma non dimostra che ogni altra parte del percorso sia sana.
Il NAS deve ancora leggere i media, la rete deve consegnarli continuamente e il client deve decodificarli e riprodurli. Picchi di bitrate elevati, Wi-Fi instabile, un'interfaccia client lenta, tentativi di recupero errori di archiviazione o un lettore sottodimensionato possono interrompere un flusso altrimenti diretto.
Copia il file problematico sul client e riproducilo localmente. Se anche la riproduzione locale presenta interruzioni, indaga sul file media o sul decoder del client. Se la copia locale funziona mentre Jellyfin Direct Play fa buffering, concentra l’attenzione sulla rete e sul percorso di storage del server.
Testa il percorso LAN reale invece di un test di velocità internet.
Un risultato veloce su internet non misura il percorso dal server Jellyfin a una TV, telefono o box di streaming all’interno della casa. Non rivela nemmeno jitter Wi-Fi, perdita di pacchetti, congestione del backhaul mesh o un’interfaccia dispositivo lenta.
Una diagnosi locale utile confronta la velocità sostenuta di copia file, un client cablato, una codifica a bitrate inferiore e il file originale ad alto bitrate. Controlli pratici per lo streaming locale includono anche testare Ethernet, verificare se il client forza una transcodifica e spostare i compiti pesanti in background fuori dagli orari di visione.
Cerca una prestazione sostenuta piuttosto che il valore più alto mostrato per pochi secondi. Un video con picchi di bitrate elevati necessita di margine sufficiente per superare brevi rallentamenti di rete senza esaurire il buffer del client.
Il buffering remoto di solito ha una causa diversa.
Se lo stesso media viene riprodotto correttamente a casa ma fa buffering tramite una connessione esterna, la larghezza di banda di upload del server e il percorso remoto diventano i principali sospetti.
La velocità utilizzabile è limitata dalla velocità di upload della connessione domestica, dalla velocità di download del client remoto, dall’overhead di VPN o reverse-proxy, dal traffico concorrente in casa e dal bitrate del flusso. Un grande remux può superare la capacità di upload disponibile anche se riprodotto perfettamente in Direct Play sulla LAN.
Abbassa temporaneamente la qualità di riproduzione remota. Se questo risolve il buffering, imposta un bitrate remoto sostenibile o usa la transcodifica hardware per creare un flusso più piccolo. Considera l’impostazione più bassa come prova di un limite di banda, non come indicazione che il file originale sia difettoso.
Lo storage è più soggetto a guasti sotto carico di lavoro concorrente.
Un disco rigido sano può solitamente leggere senza difficoltà un flusso video ordinario. Lo storage diventa più sospetto quando la riproduzione si sovrappone a download, backup, scansioni della libreria, generazione di miniature, operazioni di parità, scrub o più utenti contemporaneamente.
Questi compiti creano letture, scritture e ricerche concorrenti. Un disco può mostrare una velocità sequenziale accettabile in un benchmark pur sviluppando una latenza elevata sotto attività miste.
Monitora l'utilizzo e la latenza durante il buffering. Metti in pausa download e lavori di manutenzione, quindi riproduci di nuovo lo stesso file. Mantieni il database Jellyfin, i metadata e la cache su storage a bassa latenza quando possibile, mentre i file multimediali di grandi dimensioni possono rimanere su dischi orientati alla capacità.
Una directory di transcodifica piena può bloccare la riproduzione
Il video transcodificato viene scritto come segmenti temporanei prima che il client li consumi. Se il filesystem assegnato, SSD, disco RAM o volume Docker ha spazio libero insufficiente, FFmpeg non può più produrre nuovi segmenti.
Un problema precedente di Jellyfin ha documentato come la riproduzione potesse continuare solo fino all'ultimo segmento creato prima che la directory di transcodifica si riempisse. Il report è vecchio e chiuso, ma il sintomo rimane un motivo utile per controllare lo spazio quando uno stream transcodificato si ferma dopo alcuni minuti.
Controlla lo spazio libero, la disponibilità degli inode, la mappatura del contenitore, i permessi di scrittura e il limite di capacità del percorso di transcodifica. Fai particolare attenzione a piccoli dischi RAM o filesystem temporanei: usare la memoria può ridurre la latenza dello storage, ma un limite troppo basso può causare un arresto improvviso della riproduzione.
Un file problematico di solito indica un problema con il media
Se molti file con risoluzione e bitrate simili vengono riprodotti correttamente, un singolo titolo che fallisce è meno probabile che dimostri che l'intero server è sottodimensionato.
Il file potrebbe contenere un profilo codec insolito, frame danneggiati, un layout audio non supportato, una traccia di sottotitoli immagine, timestamp errati o un picco estremo di bitrate. Una stagione di una serie potrebbe anche essere stata codificata diversamente dalle altre.
Prova un'altra traccia audio, disabilita i sottotitoli, controlla le informazioni multimediali e confronta il file con un altro titolo che utilizza lo stesso codec. Un semplice remux in un nuovo contenitore può aiutare a determinare se il problema riguarda il contenitore o i timestamp senza ricodificare l'intero video.
Più flussi rivelano i limiti delle risorse condivise
Un server domestico può gestire perfettamente un flusso e iniziare a bufferizzare solo quando un altro utente avvia la riproduzione. Confronta la modalità di riproduzione di ogni sessione attiva prima di presumere che la rete sia l'unica responsabile.
Diverse sessioni di Direct Play aggiungono principalmente carico su storage e rete. Diverse transcodifiche video competono anche per la capacità di codifica GPU, filtri CPU, larghezza di banda della memoria e spazio nella directory di transcodifica.
Testa una sessione, poi aggiungi gli stream uno alla volta monitorando l'uso di CPU, GPU, disco e rete. Questo identifica se il limite pratico è il numero di conversioni, il bitrate totale dei media o l'attività mista di storage.
Leggi il log FFmpeg prima di reinstallare Jellyfin.
La Dashboard del server indica il tipo di riproduzione in corso, mentre il corrispondente log FFmpeg spiega come Jellyfin ha tentato di processare il file.
Cerca errori di inizializzazione del dispositivo hardware, errori di permessi, profili non supportati, fallback software, filtri per sottotitoli, filtri di tone mapping, errori di input/output, codici di uscita dei processi ed errori di spazio di archiviazione.
Cattura il log dalla sessione esatta che fa buffering. Un log da un Direct Play non correlato o da una transcodifica riuscita può portare a conclusioni errate. Reinstallare il server raramente risolve un limite del codec client, un dispositivo GPU inaccessibile o una directory temporanea piena.
Usa il sintomo per scegliere il test successivo.
| Sintomo. | Direzione più probabile. | Test successivo. |
| Fa buffering solo con i sottotitoli. | Sottotitoli incorporati. | Disabilita i sottotitoli o seleziona SRT. |
| Solo un client fa buffering. | Codec o decoder del client. | Riproduci lo stesso file in un altro client. |
| Il Direct Play fa buffering. | Rete, client, storage o file. | Copia il file localmente e testa Ethernet. |
| La CPU raggiunge il massimo durante la riproduzione. | Transcodifica software o parziale. | Controlla l'attività GPU e i filtri FFmpeg. |
| L'accelerazione hardware è abilitata ma non usata. | Dispositivo, runtime, gruppo o driver. | Verifica l'accesso alla GPU all'interno del container. |
| Solo i file HDR fanno buffering. | Tone mapping o decodifica a 10 bit. | Testa su un client HDR e controlla le fasi GPU. |
| Locale funziona ma il remoto fa buffering. | Larghezza di banda di upload o bitrate remoto. | Abbassa temporaneamente la qualità remota. |
| La riproduzione si ferma dopo alcuni minuti. | Esaurimento dello storage o delle risorse per la transcodifica. | Controlla lo spazio libero e il log FFmpeg. |
| Solo un file fallisce. | Profilo codec, sottotitoli, audio o corruzione. | Cambia tracce e controlla le informazioni media. |
| Il secondo stream causa buffering in entrambi. | Limite condiviso di calcolo, rete o storage. | Confronta tutte le modalità di sessione e l'utilizzo. |
Segui questo ordine di risoluzione dei problemi.
- Riproduci il problema con lo stesso file e client.
- Apri la Dashboard di Jellyfin e registra la modalità di riproduzione.
- Registra il motivo indicato per la transcodifica o la compatibilità.
- Disabilita i sottotitoli e prova un'altra traccia audio.
- Riproduci lo stesso file tramite un altro client.
- Controlla l'attività della CPU e della GPU durante la sessione interessata.
- Apri il log FFmpeg corrispondente.
- Controlla lo spazio nella directory di transcodifica e i permessi di scrittura.
- Testa la velocità sostenuta della LAN o la capacità di upload remoto.
- Metti in pausa download, backup, scansioni e manutenzione dello storage.
- Confronta il file problematico con media simili.
- Considera nuovo hardware solo dopo che le evidenze mostrano un limite di calcolo.
Questo ordine evita che cambiamenti non correlati nascondano la causa originale. Cambia una variabile alla volta e riproduci la stessa scena in modo che i risultati siano comparabili.
Conclusione finale
Il buffering di Jellyfin non significa automaticamente che il server domestico abbia bisogno di una CPU più veloce. Inizia con la modalità di riproduzione attiva, perché Direct Play e la transcodifica video indicano parti diverse del sistema.
Per le sessioni transcodificate, identifica perché è necessaria la conversione, verifica l’intera pipeline di accelerazione hardware, prova senza sottotitoli, controlla la mappatura del tono HDR e conferma che il percorso di transcodifica abbia spazio scrivibile sufficiente. In Docker, verifica la GPU dall’interno del contenitore invece di affidarti solo al rilevamento dell’host.
Per il Direct Play, concentrati sulla velocità di rete sostenuta, la decodifica del client, l’attività di archiviazione e il singolo file multimediale. La combinazione di modalità di riproduzione, client, codec, sottotitoli, attività delle risorse e log di FFmpeg fornisce una diagnosi più affidabile rispetto a cambiare impostazioni a caso o sostituire prima l’hardware.
FAQ
Perché Jellyfin effettua il buffering solo quando i sottotitoli sono abilitati?
Il formato dei sottotitoli selezionato potrebbe richiedere il burn-in. Jellyfin deve quindi decodificare il video, sovrapporre i sottotitoli su ogni fotogramma e codificare un nuovo flusso. Prova a disabilitare i sottotitoli, selezionare una traccia basata su testo o usare un client che possa renderizzare direttamente il formato dei sottotitoli.
Perché Jellyfin transcodifica su un dispositivo ma usa Direct Play su un altro?
I client supportano diverse combinazioni di contenitori, codec video, formati audio, tipi di sottotitoli, profili e bitrate. Il dispositivo meno compatibile chiede al server di convertire la parte del file non supportata.
Come posso confermare che l’accelerazione hardware di Jellyfin funziona?
Forza una transcodifica video, quindi controlla i motori di decodifica e codifica GPU del server. Conferma anche che il log di FFmpeg utilizzi il dispositivo hardware previsto e che il contenitore possa accedere al dispositivo senza errori di permesso.
Perché Jellyfin effettua il buffering anche se indica Direct Play?
Il Direct Play elimina la transcodifica video dal percorso, ma la rete, l’archiviazione, il file multimediale e il decodificatore del client possono comunque essere troppo lenti o instabili. Prova il file localmente sullo stesso client e confronta la riproduzione via cavo e wireless.
Jellyfin dovrebbe usare un SSD per la transcodifica?
Un SSD può ridurre la latenza dei segmenti temporanei ed è utile per il database, i metadati e la cache di Jellyfin. Il requisito più importante è un percorso di transcodifica con spazio sufficiente, scritture affidabili e permessi corretti. Anche un disco RAM di dimensioni adeguate può funzionare, ma uno troppo piccolo può interrompere la riproduzione.
Supporto e consigli
Altro da leggere

Come ottimizzare lo storage NAS per il montaggio con Adobe Premiere Pro
Conserva i media condivisi sul NAS, la cache di Premiere sull'SSD locale e dimensiona la rete in base al bitrate del codec, ai flussi...

Installazione dell'app CasaOS fallita: registri, DNS e porte
Questa guida spiega come risolvere i problemi di installazione delle app di CasaOS controllando i log di CasaOS, i log di Docker, la risoluzione...

10 app self-hosted da provare su un server domestico
Esplora 10 app pratiche self-hosted, tra cui Immich, Jellyfin, Vaultwarden, Nextcloud, Home Assistant, Stirling-PDF e AdGuard Home.

