Tecnología · GUÍA PRÁCTICA
¿Los subtítulos de Jellyfin están desincronizados? Prueba el archivo, el cliente y la ruta antes de retocar tiempos
Si el desfase aparece solo al avanzar, reanudar, hacer direct stream o transcodificar, el archivo de subtítulos puede estar bien. Conserva el original, compara las mismas tres frases en reproducción local y en Jellyfin, y registra qué ruta crea la diferencia antes de editar.

No empieces retocando los tiempos ni sustituyendo la única copia del subtítulo. El mismo síntoma —texto adelantado o retrasado— puede venir de un desfase fijo del archivo, una deriva que crece porque el subtítulo no corresponde a ese montaje exacto, o una ruta de reproducción de Jellyfin que diverge después de buscar, reanudar, hacer direct stream o transcodificar.
La documentación actual de códecs de Jellyfin explica que el formato del subtítulo y la compatibilidad del cliente y del contenedor pueden obligar a convertirlo o quemarlo en el vídeo, cambiando la ruta real. Informes independientes también describen reproducción directa sincronizada frente a transcodificación desincronizada, y desplazamientos tras reanudar o hacer direct stream.
Esta guía no atribuye todo a un único fallo. Mantiene intactos los originales, prueba las mismas tres frases conocidas en un reproductor local y en Jellyfin, registra la pista seleccionada, el método de reproducción y el motivo de transcodificación, y elige la acción mínima que respalda el patrón.
1. Congela la evidencia antes de tocar el subtítulo
Haz una copia de todo subtítulo externo y no modifiques el contenedor original. Si está incrustado, anota idioma, título, formato y posición en la lista. Si hay varias pistas parecidas, registra exactamente cuál selecciona Jellyfin; probar un SRT no prueba otro SRT incrustado, ASS, PGS u otra pista.
Anota nombre, duración y, si se conoce, edición o lanzamiento del vídeo. El mismo frame rate nominal no garantiza coincidencia: otra edición puede añadir o quitar logotipos, resúmenes, escenas o metraje. No declares correcta una pista solo porque ambos lados muestran la misma cifra.
Registra versión del servidor, cliente y dispositivo, y si el problema aparece desde el inicio, después de buscar, al reanudar o durante toda la reproducción. Esa instantánea será el contexto de cada resultado.
2. Elige tres frases reconocibles
Escoge una frase corta cerca del principio, otra en la mitad y otra cerca del final. Anota las palabras, el instante en que empieza la voz y si el subtítulo sale antes, a tiempo o después. Evita música, cambios de plano o líneas que abarcan varias frases.
Los tres puntos muestran la forma del error. Si todos se adelantan o retrasan aproximadamente lo mismo, es un desfase fijo. Si el principio está cerca y la diferencia crece, es deriva de tiempos o de edición. Si todo encaja hasta buscar o reanudar, trátalo como resultado de estado de reproducción y no como archivo defectuoso.
Usa las mismas tres frases en todas las rutas. Cambiar de escena entre clientes impide una comparación directa.
3. Crea una referencia con el archivo local
Abre el archivo y la pista exactos —o la copia externa— en un reproductor fiable como VLC. Sin editar, reproduce desde el inicio y revisa también las frases de mitad y final. Anota si el desfase es fijo, aumenta o no existe.
Si el mismo desfase o deriva aparece localmente, la evidencia apunta primero al archivo de subtítulos. Jellyfin puede mostrarlo de otra forma, pero todavía no hay base para culpar al cliente o al reloj de transcodificación.
Si los tres puntos se mantienen sincronizados localmente, conserva ese resultado: será el control para probar Direct Play, Direct Stream o Transcoding en Jellyfin.
4. Construye la matriz de rutas de Jellyfin
Reproduce el mismo elemento en el cliente más sencillo disponible y abre Playback Info. Anota Direct Play, Direct Stream o Transcoding, el motivo indicado y el formato de la pista. La documentación advierte que un subtítulo no compatible puede convertirse o quemarse; no deduzcas la ruta solo por la extensión.
Completa una fila desde un inicio limpio. Después busca las frases de mitad y final, detén la reproducción y reanuda desde una posición guardada. Si es posible, repite en un segundo cliente sin cambiar los archivos. Cada fila representa una sola ruta.
Hoja de trabajo: Ruta | Cliente/versión | Método | Pista/formato | Inicio | Mitad | Final | Tras buscar | Tras reanudar | ¿Audio también desplazado? Archivo local | reproductor/versión | local | pista exacta | antes/a tiempo/después | resultado | resultado | resultado | resultado | sí/no Referencia Jellyfin | cliente/versión | Direct Play/Direct Stream/Transcoding | pista exacta | resultado | resultado | resultado | resultado | resultado | sí/no Comparación Jellyfin | segundo cliente o una sola ruta cambiada | método | pista exacta | resultado | resultado | resultado | resultado | resultado | sí/no
Cambia una sola variable por comparación. Si cambias a la vez cliente, pista, preferencia de contenedor y límite de calidad, un resultado distinto no identifica qué cambio importó.
5. Clasifica el patrón antes de elegir arreglo
Fijo en todas partes: la misma pista se adelanta o retrasa casi lo mismo en local y en todas las rutas. Un ajuste temporal confirma la magnitud, pero no modifica el archivo. Para una corrección permanente, retoca una copia y conserva el original.
Deriva en todas partes: la separación crece entre principio y final tanto localmente como en Jellyfin. Probablemente no coincide el montaje o la escala temporal. Busca una pista del lanzamiento exacto o reescala una copia solo después de verificar primera y última frase.
Correcto localmente y mal solo al transcodificar o hacer direct stream: conserva el subtítulo. Hay informes de Jellyfin con Direct Play sincronizado y otras rutas desfasadas. Guarda Playback Info, motivo y registros en vez de reescribir una pista que pasó el control.
Correcto desde el inicio y mal después de buscar o reanudar: registra destino o posición guardada y si discrepan audio, vídeo o subtítulo. Un informe de reanudación mostró que el fotograma de una misma marca podía diferir de VLC; el síntoma aparente de subtítulo pertenecía al reloj de reproducción.
Mal solo en un cliente: repite la misma pista y frases en otro cliente y conserva versiones. No conviertas toda la biblioteca por un resultado aislado.
6. Aplica solo la acción mínima y acotada
Para un desfase fijo, usa el retraso temporal del reproductor para confirmar la cantidad. Si debe persistir, desplaza una copia con una herramienta que conserve el original. Para deriva, consigue una pista del montaje exacto o reescala una copia con frases inicial y final verificadas.
Para una ruta exclusiva de Jellyfin, actualiza servidor y cliente solo por canales compatibles y repite la matriz. Un ajuste comunitario sobre el contenedor HLS puede servir como comparación de una variable si existe en tu cliente, pero no es un arreglo universal.
Si otro cliente o ruta compatible sincroniza el mismo subtítulo intacto, conserva ambas filas. La comparación ayuda más al soporte que afirmar que toda transcodificación falla.
Detente antes de borrar cachés, sustituir medios, reescribir pistas incrustadas, limpiar la biblioteca o retocar en masa. Nada de eso es necesario para identificar la ruta responsable.
7. Prepara un paquete de evidencia para soporte
Incluye versiones de servidor, cliente y dispositivo; contenedor y duración; formatos de vídeo, audio y subtítulo; pista exacta; Playback Info; motivo de transcodificación; y matriz completa. Indica si la pareja original permaneció sincronizada localmente.
Escribe una reproducción mínima, por ejemplo: «Desde cero en Web X, las tres frases coinciden. Al saltar a la frase central con vídeo copiado y audio transcodificado, el subtítulo queda tarde pero el audio sigue alineado. El mismo archivo y SRT intactos coinciden en VLC y en el cliente Y con Direct Play».
Adjunta solo el intervalo relevante del registro del servidor o FFmpeg y elimina rutas privadas, nombres de usuario, tokens e historial ajeno antes de compartir. Separa observación de conclusión: «falla tras reanudar por esta ruta» es evidencia; «Jellyfin siempre corrompe subtítulos» no lo es.
La matriz sigue siendo el resultado aunque no haya arreglo inmediato: evita reescribir una pista buena y entrega a mantenimiento versiones, ruta y transición reproducible.
Lo que esta guía no afirma
No afirma que todo desfase sea un bug de Jellyfin, que toda transcodificación produzca deriva ni que un ajuste de contenedor arregle todos los clientes. Las páginas de GitHub citadas son informes detallados de usuarios, no una causa raíz confirmada para todas las versiones actuales.
Tampoco exige mantenimiento destructivo ni editar la única copia. Su objetivo es encontrar la rama más estrecha respaldada por evidencia antes de retocar, sustituir, informar o esperar una corrección compatible.
Preguntas frecuentes
¿Por qué importa el formato si el texto es correcto? El cliente o el contenedor puede no admitirlo directamente; Jellyfin puede convertirlo o quemarlo, cambiando la ruta. Consulta Playback Info.
¿El mismo frame rate demuestra que coincide con el vídeo? No. Dos montajes pueden compartir cifra y diferir en logotipos, resúmenes o escenas. Comprueba frases al inicio, mitad y final.
¿Debo retocar si solo falla después de buscar? No antes del control. Si coincide localmente y desde cero pero falla tras buscar o reanudar, conserva el archivo y documenta esa rama.
¿Puedo probar el ajuste comunitario de HLS? Sí como comparación controlada, si existe, registrando antes y después. No lo presentes como solución universal.
¿Y si el audio también está desfasado? Registra qué pareja discrepa: subtítulo-voz, voz-imagen o ambas. Un problema de marcas de tiempo puede parecer un fallo de subtítulo.
