Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

Jellyfin 자막이 어긋나나요? 타이밍을 고치기 전에 파일·클라이언트·재생 경로를 시험하세요

탐색, 이어보기, 다이렉트 스트림 또는 트랜스코딩 뒤에만 자막이 밀린다면 자막 파일 자체는 정상일 수 있습니다. 원본을 보존하고 같은 대사 세 곳을 로컬 재생과 Jellyfin에서 비교해 어느 경로에서 어긋나는지 기록한 뒤 수정하세요.

독창적 개념 일러스트: 시작·중간·끝의 같은 자막 대사를 비교
독창적 개념 일러스트: 자막 시간을 바꾸기 전에 같은 대사 세 곳을 기록합니다. Watch at Ease

처음부터 자막 시간을 다시 맞추거나 유일한 자막 사본을 교체하지 마세요. 같은 ‘빠름/늦음’ 증상이라도 전체가 일정하게 밀린 자막, 정확한 영상 판본과 맞지 않아 점점 벌어지는 드리프트, 또는 탐색·이어보기·다이렉트 스트림·트랜스코딩 뒤에 발생하는 Jellyfin 재생 시계 문제일 수 있습니다.

Jellyfin의 현재 코덱 문서는 자막 형식과 클라이언트·컨테이너 지원 여부에 따라 자막을 변환하거나 영상에 입힐 수 있고, 그 과정에서 재생 경로가 달라진다고 설명합니다. 별개의 이슈 보고에는 다이렉트 재생은 맞지만 트랜스코딩은 어긋나는 사례와, 이어보기 또는 다이렉트 스트림에서 시간축이 달라지는 사례가 있습니다.

이 가이드는 하나의 보편적 버그를 단정하지 않습니다. 원본을 바꾸지 않은 채 같은 대사 세 지점을 로컬 플레이어와 Jellyfin에서 시험하고, 선택한 자막 트랙·재생 방식·트랜스코딩 이유를 기록해 관찰 결과에 맞는 가장 작은 다음 조치를 고릅니다.

1. 자막을 건드리기 전에 증거를 고정하세요

외부 자막은 사본을 만들고 원본 미디어 컨테이너는 그대로 둡니다. 내장 자막이면 언어, 제목, 형식, 트랙 목록의 위치를 기록하세요. 비슷한 이름의 트랙이 여러 개라면 Jellyfin이 실제 선택한 트랙을 적습니다. 한 SRT의 결과를 다른 내장 SRT, ASS, PGS 등에 적용하면 안 됩니다.

미디어 파일명, 재생 시간, 알고 있는 경우 릴리스 또는 편집 판본을 적습니다. 표시된 프레임레이트가 같아도 로고, 이전 이야기, 장면, 길이가 다른 판본일 수 있습니다. 숫자가 같다는 이유만으로 정확히 맞는 자막이라고 판단하지 마세요.

Jellyfin 서버 버전, 클라이언트 이름과 버전, 기기, 문제가 처음부터인지 탐색 뒤인지 이어보기 뒤인지 전 구간인지 기록합니다. 이후 모든 결과는 이 기준에 연결합니다.

2. 정확히 식별할 수 있는 대사 세 곳을 고르세요

시작 근처, 중간, 끝 근처에서 짧은 대사를 하나씩 고릅니다. 대사 내용, 음성이 시작되는 영상 시각, 자막이 빠른지 맞는지 늦는지 기록합니다. 음악, 장면 전환, 여러 문장을 걸치는 긴 자막은 기준으로 삼지 마세요.

세 점은 오류 모양을 보여 줍니다. 모두 비슷한 양만큼 빠르거나 늦으면 고정 오프셋입니다. 시작은 맞는데 끝으로 갈수록 차이가 커지면 타이밍 또는 판본 드리프트입니다. 세 점이 처음에는 맞고 탐색·이어보기 뒤에만 틀어지면 파일 오류가 아니라 재생 상태 결과로 분리합니다.

모든 경로에서 같은 세 대사를 사용하세요. 클라이언트마다 다른 장면을 고르면 직접 비교할 수 없습니다.

3. 로컬 파일 기준선을 만드세요

VLC 같은 신뢰할 수 있는 로컬 플레이어로 정확히 같은 미디어와 자막 트랙 또는 복사한 외부 자막을 엽니다. 편집하지 말고 처음부터 재생한 뒤 중간과 끝도 확인해 고정 오프셋, 증가하는 드리프트, 정상 중 하나를 적습니다.

로컬에서도 같은 오프셋이나 드리프트가 보이면 증거는 먼저 자막 파일 분기를 가리킵니다. Jellyfin에서 다르게 보일 수는 있지만 아직 클라이언트나 트랜스코딩 시계를 탓할 근거는 없습니다.

로컬의 세 지점이 모두 맞으면 그 결과를 보존하세요. Jellyfin 다이렉트 재생, 다이렉트 스트림, 트랜스코딩을 시험할 대조군입니다.

4. Jellyfin 재생 경로 매트릭스를 만드세요

가능한 가장 단순한 Jellyfin 클라이언트에서 같은 항목을 재생하고 ‘재생 정보’를 엽니다. Direct Play, Direct Stream, Transcoding 중 무엇인지, 표시된 이유와 선택한 자막 형식을 적습니다. 지원되지 않는 자막은 변환되거나 영상에 입혀질 수 있으므로 확장자만 보고 경로를 추측하지 마세요.

처음부터 재생한 한 행을 완성한 뒤 중간·끝 대사로 이동하고, 재생을 멈췄다가 저장된 위치에서 이어봅니다. 가능하면 원본을 바꾸지 않고 두 번째 클라이언트에서도 반복합니다. 각 행은 하나의 경로만 나타냅니다.

워크시트: 경로 | 클라이언트/버전 | 재생 방식 | 자막 트랙/형식 | 시작 | 중간 | 끝 | 탐색 후 | 이어보기 후 | 오디오도 어긋남? 로컬 파일 | 플레이어/버전 | 로컬 | 정확한 트랙 | 빠름/맞음/늦음 | 결과 | 결과 | 결과 | 결과 | 예/아니요 Jellyfin 기준 | 클라이언트/버전 | Direct Play/Direct Stream/Transcoding | 정확한 트랙 | 결과 | 결과 | 결과 | 결과 | 결과 | 예/아니요 Jellyfin 비교 | 두 번째 클라이언트 또는 한 경로만 변경 | 방식 | 정확한 트랙 | 결과 | 결과 | 결과 | 결과 | 결과 | 예/아니요

비교할 때는 한 변수만 바꾸세요. 클라이언트, 자막 트랙, 컨테이너 설정, 화질 제한을 동시에 바꾸면 결과가 달라도 무엇이 영향을 줬는지 알 수 없습니다.

5. 수정하기 전에 패턴을 분류하세요

모든 경로에서 고정: 로컬과 Jellyfin 모두 거의 같은 양만큼 빠르거나 늦습니다. 세션 자막 지연으로 크기를 확인할 수 있지만 파일은 바뀌지 않습니다. 영구 수정이 필요하면 사본만 조정하고 원본을 남기세요.

모든 경로에서 드리프트: 로컬과 Jellyfin 모두 시작은 비슷하지만 끝으로 갈수록 차이가 커집니다. 정확한 판본 또는 시간 비율이 맞지 않을 가능성이 큽니다. 해당 릴리스에 맞는 자막을 찾거나 시작·끝 대사를 확인한 뒤 사본만 재조정하세요.

로컬은 정상, 트랜스코딩·다이렉트 스트림만 실패: 원본 자막을 보존하세요. Jellyfin 이슈에는 다이렉트 재생은 맞지만 다른 경로는 틀어지는 사례가 있습니다. 통과한 자막을 고치지 말고 재생 정보, 이유, 로그를 수집합니다.

처음은 정상, 탐색·이어보기 뒤 실패: 이동한 시각 또는 저장 위치와 오디오·영상·자막 중 무엇이 어긋나는지 기록하세요. 한 이어보기 보고에서는 같은 표시 시각의 프레임이 VLC와 달라 자막처럼 보인 문제가 재생 시계 분기였습니다.

한 클라이언트에서만 실패: 같은 트랙과 대사를 다른 클라이언트에서 반복하고 버전을 남깁니다. 한 기기 결과만으로 전체 라이브러리를 변환하지 마세요.

6. 가장 작고 범위가 분명한 조치만 하세요

고정 오프셋이면 플레이어의 임시 자막 지연으로 양을 확인합니다. 계속 쓸 필요가 있을 때만 원본을 보존하는 도구로 사본을 이동하세요. 드리프트면 정확한 판본에 맞는 자막을 구하거나 확인된 시작·끝 대사로 사본 시간을 재조정합니다.

Jellyfin 경로에서만 실패하면 지원되는 공식 채널로 서버와 클라이언트를 업데이트하고 같은 매트릭스를 다시 만듭니다. HLS 컨테이너 선호를 바꾸는 커뮤니티 방법은 해당 설정이 있을 때 한 변수 비교로 쓸 수 있지만 보편적 해결책은 아닙니다.

다른 클라이언트나 지원되는 경로에서 같은 미수정 자막이 맞으면 두 행을 모두 보존하세요. ‘트랜스코딩은 항상 망가진다’는 주장보다 지원팀에 훨씬 유용합니다.

경로를 확인하기 전에 캐시 삭제, 미디어 교체, 내장 자막 재작성, 라이브러리 초기화, 대량 시간 수정은 멈추세요. 어느 것도 매트릭스 완성에 필요하지 않습니다.

7. 지원팀에 보낼 증거 묶음을 만드세요

서버 버전, 클라이언트·기기 버전, 컨테이너와 길이, 영상·오디오·자막 형식, 정확한 트랙, 재생 정보, 트랜스코딩 이유, 완성한 매트릭스를 넣습니다. 원본 조합이 로컬에서 맞았는지도 명시하세요.

최소 재현 순서를 한 개 작성합니다. 예: ‘Web 클라이언트 X에서 처음부터 재생하면 세 대사가 모두 맞음. 영상 복사·오디오 트랜스코딩 상태로 중간으로 이동하면 자막만 늦고 오디오는 맞음. 같은 미수정 파일과 SRT는 VLC와 Direct Play 클라이언트 Y에서 맞음.’

관련 시간대의 서버 또는 FFmpeg 로그만 첨부하고, 공유 전에 개인 경로, 사용자명, 토큰, 무관한 기록을 제거합니다. ‘이 경로에서 이어보기 뒤 실패’는 관찰이지만 ‘Jellyfin은 항상 자막을 망친다’는 결론은 아닙니다.

즉시 해결하지 못해도 매트릭스가 결과입니다. 정상 자막을 잘못 수정하는 일을 막고 유지보수자에게 버전, 경로, 재현 가능한 상태 전환을 제공합니다.

이 가이드가 주장하지 않는 것

모든 자막 어긋남이 Jellyfin 버그이거나 모든 트랜스코딩이 드리프트를 만들거나 특정 컨테이너 설정이 모든 클라이언트를 고친다고 주장하지 않습니다. 인용한 GitHub 페이지는 상세한 사용자 이슈이지 현재 모든 버전의 단일 확정 원인이 아닙니다.

파괴적인 라이브러리 유지보수나 유일한 자막 사본 편집도 요구하지 않습니다. 수정·교체·보고·지원되는 패치를 기다리기 전에 증거가 가장 분명한 좁은 분기를 찾는 것이 목적입니다.

자주 묻는 질문

글자가 맞는데 자막 형식이 왜 중요한가요? 클라이언트나 컨테이너가 형식을 직접 지원하지 않으면 Jellyfin이 변환하거나 영상에 입혀 경로가 달라질 수 있습니다. 재생 정보를 확인하세요.

프레임레이트가 같으면 영상과 맞는 자막인가요? 아닙니다. 로고, 요약, 장면이 다른 판본도 같은 표기값을 가질 수 있습니다. 시작·중간·끝 대사로 확인하세요.

탐색 후에만 틀어져도 자막을 재조정해야 하나요? 대조 시험 전에는 아닙니다. 로컬과 처음 재생은 맞고 탐색·이어보기 뒤만 실패하면 파일을 보존하고 재생 상태 분기를 기록하세요.

커뮤니티의 HLS 컨테이너 설정을 시험해도 되나요? 설정이 있으면 전후를 기록하는 통제 비교로는 가능합니다. 보편적 해결책이라고 말하면 안 됩니다.

오디오도 어긋나면 어떻게 하나요? 자막-음성, 음성-영상, 또는 둘 다 중 무엇이 다른지 적으세요. 스트림 시간축 문제가 자막 문제처럼 보일 수 있습니다.

독창적 개념 일러스트: 로컬·다이렉트 재생·다이렉트 스트림·트랜스코딩 경로 비교
독창적 개념 일러스트: 영상과 자막은 그대로 두고 재생 경로만 변수로 둡니다. Watch at Ease