O áudio fica dessincronizado após a transcodificação quando a linha temporal do áudio gerado deixa de avançar exatamente ao mesmo ritmo ou limite de marca temporal que o vídeo.
A reprodução direta pode ocultar o problema, porque o cliente utiliza o contentor original e as respetivas instruções de temporização nativas, enquanto a transcodificação descodifica, faz reamostragem, volta a codificar, atribui marcas temporais, segmenta e remultiplexa um ou ambos os fluxos. Comece por determinar se o erro é um desfasamento fixo, uma dessincronização que aumenta gradualmente ou um salto introduzido ao procurar ou retomar a reprodução. Estes padrões apontam para partes diferentes do fluxo de processamento multimédia.
Classifique o erro de sincronização antes de alterar o transcodificador
Reproduza desde o início, sem procurar posições, e registe o desfasamento perto do início, a meio e no fim. Utilize uma cena com um impacto visível ou uma consoante pronunciada, em vez de fazer uma estimativa com base na música de fundo.
Um desfasamento fixo que permanece constante sugere uma marca temporal inicial, uma lista de edição, um atraso do recetor ou uma definição do cliente. Um intervalo que aumenta continuamente sugere ritmos de relógio incompatíveis, interpretação da taxa de fotogramas, alongamento do áudio ou reamostragem. Um salto repentino após procurar uma posição ou retomar a reprodução aponta para marcas temporais de segmentos e reinícios.
Repita a medição com as legendas desativadas e a definição de atraso manual do áudio do cliente a zero. Corrigir uma dessincronização variável com um único desfasamento estático apenas oculta o sintoma numa determinada marca temporal.
Confirme que o ficheiro original está sincronizado
Reproduza a fonte localmente num leitor de computador de confiança e faça a reprodução direta através de um cliente multimédia compatível. Teste o mesmo intervalo temporal em que ocorre a dessincronização durante a transcodificação.
Se a fonte também ficar dessincronizada localmente, inspecione ou repare o ficheiro multimédia antes de alterar o servidor. Se a fonte permanecer sincronizada em todo o lado, exceto no percurso transcodificado, preserve o ficheiro e recolha a decisão de reprodução do servidor multimédia, o comando do FFmpeg e a versão do cliente.
Utilize um segundo ficheiro com os mesmos codecs e uma linha temporal comprovadamente correta como controlo. Um único título problemático aponta para marcas temporais da fonte ou metadados do contentor; muitos títulos com falhas num só cliente apontam para um transcodificador, segmentador ou percurso de reprodução comum.
Identifique quais os fluxos que estão realmente a ser convertidos
Verifique se a sessão faz apenas transcodificação de áudio com cópia do fluxo de vídeo, uma remultiplexagem sem conversão de codec ou uma transcodificação completa de vídeo e áudio. Estes percursos criam limites temporais diferentes.
A conversão apenas de áudio também pode causar dessincronização após procurar uma posição. Um problema do Jellyfin reproduziu dessincronização do áudio após procurar uma posição quando E-AC-3 ou DTS era convertido para AAC enquanto o fluxo de vídeo permanecia copiado.
Mude para uma faixa de áudio compatível com o cliente, mantendo o vídeo, a qualidade e as legendas inalterados. Se a sessão passar a Reprodução direta e a dessincronização desaparecer, concentre-se nas marcas temporais do áudio, na reamostragem, na conversão de canais ou no contentor de entrega gerado, em vez do desempenho da codificação de vídeo.
A visão geral do ZimaSpace sobre o fluxo de transcodificação de áudio apresenta o mecanismo adjacente para interpretar este teste ao nível do fluxo.
Teste a reprodução desde o início, após procurar uma posição e após retomar
Execute três sessões controladas com o mesmo cliente e ficheiro: reprodução ininterrupta desde zero, procura de uma posição para além da região colocada em memória intermédia e retoma a partir de uma posição guardada. Registe exatamente quando a sincronização muda.
Foi referido que a reprodução transcodificada em 4K permanece sincronizada desde o início, mas muda após avançar ou recuar, alterar capítulos ou retomar. A condição distintiva é uma alteração da linha temporal durante a transcodificação, não a capacidade bruta de descodificar o conteúdo multimédia.
Um relatório separado do Jellyfin mostra uma dessincronização específica ao retomar, mesmo quando o próprio ficheiro de origem está correto. Esse padrão isola o tratamento da retoma antes de qualquer remultiplexagem de toda a biblioteca.
Se apenas a procura de posições ou a retoma falhar, teste outro contentor de entrega ou leitor do cliente quando a aplicação disponibilizar essa opção. Mantenha a reprodução ininterrupta como controlo, para que o resultado possa ser atribuído ao comportamento de reinício das marcas temporais.
Inspecione a temporização da fonte, a taxa de fotogramas e os metadados de alongamento do áudio
Utilize uma ferramenta de análise multimédia para registar a taxa de fotogramas e a base temporal do vídeo, a taxa de amostragem do áudio, os tempos de início dos fluxos, a duração, as marcas temporais negativas, as listas de edição e quaisquer valores de atraso ou alongamento da faixa. Compare a primeira e a última marca temporal de apresentação.
Algumas faixas Matroska incluem intencionalmente um ajuste temporal linear para fazer corresponder o áudio de uma fonte com uma taxa de fotogramas diferente. Um problema do Jellyfin descreve faixas de áudio com desfasamento linear que permanecem utilizáveis no contentor original, mas são tratadas incorretamente durante a transcodificação.
Se a duração do áudio diferir proporcionalmente da duração do vídeo, crie uma cópia de teste corrigida que faça explicitamente a reamostragem ou o alongamento temporal do áudio uma vez e, em seguida, remultiplexe-a com marcas temporais limpas. Preserve o original e teste um título antes de aplicar qualquer reparação em lote.
Verifique o comportamento das marcas temporais dos segmentos HLS ou fMP4
Inspecione o comando do transcodificador para verificar as opções de procura, a cópia de marcas temporais, o tratamento de marcas temporais negativas, o tipo de segmento HLS, a duração dos segmentos e se é iniciado um novo processo de transcodificação quando o cliente ultrapassa o conteúdo colocado em memória intermédia.
Uma investigação sobre marcas temporais do Jellyfin concluiu que um comportamento de procura impreciso podia reiniciar um fluxo HLS numa posição desfasada da linha temporal original. A falha principal foram marcas temporais transcodificadas desalinhadas, que afetavam posteriormente a temporização apresentada pelo cliente.
Não copie opções da linha de comandos de uma versão não relacionada para um contentor de produção. Primeiro, atualize ou reverta o servidor e o cliente dentro dos percursos suportados, limpe apenas os segmentos de transcodificação que possam ser regenerados e compare o comportamento de MPEG-TS, fMP4 ou do leitor nativo quando a aplicação disponibilizar essas opções.
Aplique a correção mais pequena e faça uma verificação com a duração total
Utilize o percurso comprovado pelos testes: selecione uma faixa de áudio ou cliente compatível, evite o percurso de procura ou retoma que falha, altere o contentor de transmissão suportado, atualize ou fixe a versão do servidor multimédia ou normalize uma fonte com metadados de temporização incorretos.
Não volte a codificar todos os filmes porque uma aplicação de televisão apresenta dessincronização. Uma falha específica do cliente deve ser corrigida no cliente ou na camada do perfil de reprodução, enquanto uma dessincronização linear específica da fonte pertence à reparação temporal desse ficheiro.
Verifique o percurso reparado do início ao fim e, em seguida, repita uma procura de posição e uma retoma perto do ponto da falha original. O problema só está resolvido quando o desfasamento permanece estável durante toda a duração, os segmentos gerados preservam a linha temporal esperada e as mesmas definições sobrevivem ao reinício do cliente e à recriação do servidor.
Suporte e Dicas
Mais para Ler

O Plex pode partilhar uma GPU com outro contentor Docker?
O Plex e outro contentor conseguem frequentemente aceder à mesma GPU, mas é necessário testar o suporte dos controladores, o mapeamento de dispositivos, a...

Como saber se um erro do Plex vem do cliente ou do servidor
Reproduza o mesmo item noutro cliente, compare o percurso da sessão e, em seguida, recolha provas do servidor apenas depois de o âmbito lhe...

Como configurar a cache do Plex e o armazenamento temporário de transcodificação
Proteja o estado persistente do Plex enquanto coloca os ficheiros temporários de transcodificação num armazenamento local adequado e, em seguida, verifique a limpeza, o...

