L’audio perde la sincronizzazione dopo la transcodifica quando la timeline audio generata non avanza più esattamente alla stessa velocità o con gli stessi riferimenti temporali del video.
La riproduzione diretta può nascondere il problema perché il client utilizza il contenitore originale e le relative istruzioni temporali native, mentre la transcodifica decodifica, ricampiona, ricodifica, assegna i timestamp, segmenta e ricompone uno o entrambi i flussi. Inizia stabilendo se l’errore è un offset fisso, una desincronizzazione che aumenta gradualmente o un salto introdotto da una ricerca o dalla ripresa della riproduzione. Questi schemi indicano punti diversi della pipeline multimediale.
Classifica l’errore di sincronizzazione prima di modificare il transcodificatore
Riproduci il contenuto dall’inizio senza effettuare ricerche e registra l’offset vicino all’inizio, a metà e alla fine. Usa una scena con un impatto visibile o una consonante pronunciata, invece di stimare la sincronizzazione sulla base della musica di sottofondo.
Un offset fisso che rimane costante suggerisce un timestamp iniziale, una lista di montaggio, un ritardo del ricevitore o un’impostazione del client. Un divario che aumenta costantemente suggerisce frequenze di clock non corrispondenti, un’interpretazione errata del frame rate, un allungamento dell’audio o un ricampionamento. Un salto improvviso dopo una ricerca o la ripresa indica timestamp relativi ai segmenti e al riavvio.
Ripeti la misurazione con i sottotitoli disattivati e con l’impostazione manuale del ritardo audio del client impostata su zero. Correggere una desincronizzazione variabile con un unico offset statico nasconde il sintomo soltanto a un determinato timestamp.
Dimostra che il file originale è sincronizzato
Riproduci la sorgente localmente in un player desktop affidabile e tramite riproduzione diretta su un client multimediale compatibile. Verifica lo stesso intervallo di timestamp in cui si verifica la desincronizzazione durante la transcodifica.
Se anche la sorgente perde la sincronizzazione localmente, controlla o ripara il file multimediale prima di modificare il server. Se la sorgente rimane sincronizzata ovunque tranne che nel percorso transcodificato, conserva il file e acquisisci la decisione di riproduzione del server multimediale, il comando FFmpeg e la versione del client.
Usa un secondo file con gli stessi codec e una timeline notoriamente corretta come controllo. Un solo titolo problematico indirizza verso i timestamp della sorgente o i metadati del contenitore; molti titoli che falliscono su un unico client indicano un problema comune del transcodificatore, del segmentatore o del percorso di riproduzione.
Identifica quali flussi vengono effettivamente convertiti
Controlla se la sessione esegue una transcodifica del solo audio con copia del flusso video, una ricomposizione senza conversione del codec o una transcodifica completa di video e audio. Questi percorsi creano riferimenti temporali diversi.
La conversione del solo audio può comunque causare una desincronizzazione dopo una ricerca. Un problema di Jellyfin ha riprodotto una desincronizzazione dell’audio dopo una ricerca quando E-AC-3 o DTS veniva convertito in AAC mentre il flusso video rimaneva copiato.
Passa a una traccia audio supportata dal client mantenendo invariati video, qualità e sottotitoli. Se la sessione diventa una riproduzione diretta e la desincronizzazione scompare, concentrati sui timestamp audio, sul ricampionamento, sulla conversione dei canali o sul contenitore di distribuzione generato, anziché sulle prestazioni di codifica video.
La panoramica di ZimaSpace sulla pipeline di transcodifica audio fornisce il meccanismo correlato per interpretare questo test a livello di flusso.
Testa la riproduzione dall’inizio, dopo una ricerca e dopo la ripresa
Esegui tre sessioni controllate con lo stesso client e lo stesso file: riproduzione ininterrotta dall’inizio, una ricerca oltre la regione già memorizzata nel buffer e ripresa da una posizione salvata. Registra esattamente quando cambia la sincronizzazione.
È stato segnalato che la riproduzione transcodificata in 4K rimane sincronizzata dall’inizio, ma si sposta dopo lo scorrimento, i cambi di capitolo o la ripresa. La condizione distintiva è un cambiamento della timeline durante la transcodifica, non la semplice capacità di decodificare il contenuto.
Un rapporto separato di Jellyfin mostra una desincronizzazione specifica della ripresa anche quando il file sorgente è corretto. Questo schema isola la gestione della ripresa prima di qualsiasi ricomposizione dell’intera libreria.
Se falliscono soltanto la ricerca o la ripresa, prova un altro contenitore di distribuzione o un altro player client quando l’applicazione offre questa possibilità. Mantieni la riproduzione ininterrotta come controllo, così il risultato può essere attribuito al comportamento dei timestamp al riavvio.
Controlla la temporizzazione della sorgente, il frame rate e i metadati di allungamento dell’audio
Usa uno strumento di analisi multimediale per registrare il frame rate e la base dei tempi del video, la frequenza di campionamento audio, gli orari di inizio dei flussi, la durata, i timestamp negativi, le liste di montaggio ed eventuali valori di ritardo o allungamento delle tracce. Confronta il primo e l’ultimo timestamp di presentazione.
Alcune tracce Matroska contengono intenzionalmente una regolazione lineare della temporizzazione per allineare l’audio proveniente da una sorgente con un frame rate diverso. Un problema di Jellyfin descrive tracce audio con una deriva lineare che rimangono utilizzabili nel contenitore originale, ma vengono gestite in modo errato durante la transcodifica.
Se la durata dell’audio differisce proporzionalmente da quella del video, crea una copia di prova corretta che ricampioni o modifichi esplicitamente la velocità dell’audio una sola volta, quindi ricomponila con timestamp puliti. Conserva l’originale e testa un solo titolo prima di applicare qualsiasi riparazione in batch.
Controlla il comportamento dei timestamp nei segmenti HLS o fMP4
Esamina il comando del transcodificatore verificando i flag di ricerca, la copia dei timestamp, la gestione dei timestamp negativi, il tipo di segmento HLS, la durata dei segmenti e l’eventuale avvio di un nuovo processo di transcodifica quando il client si sposta oltre il contenuto memorizzato nel buffer.
Un’analisi dei timestamp di Jellyfin ha rilevato che una ricerca imprecisa poteva riavviare uno stream HLS con un offset rispetto alla timeline originale. Il problema principale erano i timestamp transcodificati disallineati, che influivano poi sulla temporizzazione visualizzata dal client.
Non copiare flag della riga di comando da una versione non correlata in un contenitore di produzione. Prima aggiorna o ripristina il server e il client seguendo percorsi supportati, cancella soltanto i segmenti di transcodifica rigenerabili e confronta il comportamento MPEG-TS, fMP4 o del player nativo quando l’applicazione offre queste opzioni.
Applica la correzione più piccola ed esegui una verifica sull’intera durata
Usa il percorso dimostrato dai test: seleziona una traccia audio o un client compatibile, evita il percorso di ricerca o ripresa che causa il problema, modifica il contenitore di streaming supportato, aggiorna o blocca la versione del server multimediale oppure normalizza una sorgente con metadati temporali errati.
Non ricodificare tutti i film perché un’app per televisori presenta una desincronizzazione. Un problema specifico del client deve essere corretto a livello del client o del profilo di riproduzione, mentre una deriva lineare specifica della sorgente deve essere corretta nei metadati temporali di quel file.
Verifica il percorso corretto dall’inizio alla fine, quindi ripeti una ricerca e una ripresa vicino al punto in cui si è verificato originariamente il problema. Il problema è risolto soltanto quando l’offset rimane stabile per l’intera durata, i segmenti generati conservano la timeline prevista e le stesse impostazioni restano valide dopo il riavvio del client e la ricreazione del server.
Supporto e consigli
Altro da leggere

Plex può condividere una GPU con un altro container Docker?
Plex e un altro container possono spesso accedere alla stessa GPU, ma è necessario testare il supporto dei driver, la mappatura dei dispositivi, il...

Come capire se un errore di Plex proviene dal client o dal server
Riproduci lo stesso elemento su un altro client, confronta il percorso della sessione, quindi raccogli le prove dal server solo dopo che l’ambito ti...

Come configurare la cache di Plex e l’archiviazione temporanea per la transcodifica
Proteggi lo stato persistente di Plex collocando i file temporanei di transcodifica su un’unità locale adatta, quindi verifica la pulizia, lo spazio libero e...

