야동위키 자막 실험: 1.2초를 맞췄는데 왜 뒤에서는 또 어긋날까요?

중간 장면에서 자막을 딱 맞췄는데, 앞부분으로 돌아가니 너무 빨리 나오고 끝부분에서는 다시 늦어져요. 이런 경우에 ‘몇 초를 더 움직여야 하지?’만 생각하면 같은 조정을 반복하게 돼요. 이번에는 시간표 전체가 밀린 경우와 시간 간격이 달라진 경우를 일부러 따로 만들어 차이를 확인했어요.

결과부터 말하면, B 지점에서 똑같이 1.2초 늦었던 두 파일은 같은 문제가 아니었어요. 하나는 자막 전체를 앞당기면 맞았고, 다른 하나는 가운데를 맞춘 뒤에도 앞뒤에 각각 1초의 오차가 남았어요.

실험은 말소리 대신 흰 상자로 했어요

대사의 시작을 귀로 판단하면 사람마다 시점을 다르게 잡을 수 있어요. 그래서 60초짜리 무음 도형 영상을 만들고 A·B·C 표시의 시작을 5초, 30초, 55초로 정했어요. 흰 상자는 각 지점에서 12프레임 동안 나타나고, 자막은 같은 글자 A·B·C로 구분했어요.

기준 영상은 640×360, 24fps, 총 1,440프레임이에요. 완성된 영상 파일을 다시 디코딩해서 가운데 영역이 밝아지는 첫 프레임의 실제 표시 시각을 읽고, WebVTT 자막의 시작 시각과 비교했어요. 아래 표는 설정값을 그대로 옮긴 것이 아니라 이 과정에서 확인한 결과예요.

B에서는 둘 다 1.2초, A와 C에서는 다른 결과

오차 = 자막 시작 − 영상 표시 시작. 양수는 자막이 늦음. 단위: 초.
조건ABC
기준 영상 + 기준 자막0.00.00.0
기준 영상 + 1.2초 늦춘 자막+1.2+1.2+1.2
빨라진 영상 + 기준 자막+0.2+1.2+2.2
고정 지연과 누적 지연의 비교고정 지연은 A B C에서 모두 1.2초. 속도 차이는 0.2초, 1.2초, 2.2초로 증가한다.2.2초1.2초0.2초ABC자막이 늦게 나오는 시간고정 +1.2초+0.2 → +2.2초
실측한 세 표시의 시간 차이를 연결한 그림이에요. 파란 선의 기울기가 있다는 점이 고정 지연과 달랐어요.

고정 지연은 시작을 옮기면 함께 맞았어요

첫 비교에서는 영상에 손대지 않고 자막 시간만 1.2초씩 늦췄어요. 자막 시작이 6.2초, 31.2초, 56.2초가 됐고 세 지점의 차이는 모두 +1.2초였어요. 각 시작 시각에서 1.2초를 빼면 원래의 5초, 30초, 55초로 돌아가요.

실제로 볼 때 초반과 후반이 비슷하게 어긋난다면 이런 일정한 시간 보정을 먼저 시도할 수 있어요. 다만 플레이어의 ‘자막 지연’과 ‘앞당김’ 표기를 확인해야 해요. 이 글의 +표기는 측정 결과를 설명하기 위한 것이지, 모든 플레이어에 같은 부호를 입력하라는 뜻은 아니에요.

누적 오차는 같은 1,440프레임의 재생 시간을 바꿔 만들었어요

두 번째 비교에서는 영상 프레임을 유지한 채 25fps로 더 빨리 재생되도록 표시 시각을 바꿨어요. 길이는 60초에서 57.6초가 됐고, 실제 A·B·C 표시는 4.8초, 28.8초, 52.8초에 시작했어요. 자막은 여전히 5초, 30초, 55초에 시작하니 뒤로 갈수록 차이가 커졌어요.

영상 표시 시각 = 기준 시각 × 24 ÷ 25

55초에 있던 C 표시를 계산하면 55 × 24 ÷ 25 = 52.8초예요. 자막의 55초와는 2.2초 차이가 나요. 실제 파일에서 읽은 시각도 같았어요. 단순히 fps 정보가 다르다는 것만으로 이런 결과가 생기지는 않아요. 프레임 수를 바꿔 원래 길이를 유지하는 변환도 가능하므로 실제 재생 시간과 각 장면의 위치를 봐야 해요.

가운데만 맞추면 앞에서는 빨라지고 뒤에서는 늦어져요

B의 +1.2초를 보고 기준 자막 전체를 1.2초 앞당긴다고 해 볼게요. 자막 시작은 3.8초, 28.8초, 53.8초가 돼요. 보정한 자막 시각에서 영상 시각을 빼면 A는 −1초, B는 0초, C는 +1초예요. 아래는 앞서 측정한 값으로 계산한 보정 결과예요.

누적 오차에 −1.2초의 고정 보정만 적용했을 때
지점보정 뒤 자막영상 표시남는 차이
A3.8초4.8초1초 빠름
B28.8초28.8초일치
C53.8초52.8초1초 늦음

한 곳의 숫자를 맞추는 것과 전체 시간표가 맞는 것은 달랐어요. 이런 패턴이면 자막 파일이 같은 길이·같은 편집본용인지부터 확인하는 편이 좋아요. 시간 간격의 차이가 확인되고 사용하는 도구가 지원한다면 비율을 조정할 수 있지만, 아무 영상에나 24/25를 적용해서는 안 돼요.

세 지점을 봐도 설명되지 않는 경우

인트로나 특정 장면 뒤에서만 차이가 갑자기 생기면 일정한 속도 차이보다 편집 구간이 다른 경우를 먼저 의심할 수 있어요. 자막이 영상에 이미 붙어 있는 경우에는 별도 자막 시간 조정이 적용되지 않아요. 재생 화면이 멈추는 버퍼링도 이 실험에서 다룬 시간표 문제와는 달라요.

이번 결과는 직접 만든 무음 영상 두 개와 자막 두 개에 한정돼요. 브라우저가 자막을 화면에 그리는 데 걸리는 지연, 무선 이어폰의 소리 지연, 외부 사이트 플레이어의 기능은 측정하지 않았어요. 그래서 이 숫자를 특정 서비스의 품질 점수로 쓰지는 않아요.

직접 비교할 수 있는 영상과 원자료

영상은 도형으로만 만들었고 소리는 없어요. 파일 하나가 약 83KB라 부담이 작고, 아래 비교를 펼친 뒤 재생을 누르면 볼 수 있어요. 첫 영상의 자막 메뉴에서 ‘기준 자막’과 ‘1.2초 늦춘 자막’을 바꿔 비교해 보세요. A는 5초 부근, B와 C는 30초와 55초 부근에 있어요.

테스트 영상 두 개 펼쳐 보기
기준 영상 · 60초 · 자막 메뉴에서 두 시간표를 비교할 수 있어요.
빨라진 영상 · 57.6초 · 기준 자막과 뒤로 갈수록 어긋나요.

시간표 형식은 MDN WebVTT 문서, 표시 시각을 바꾸는 방식은 FFmpeg setpts 문서를 참고했어요. 위 측정 수치는 야동위키가 직접 생성한 파일에서 얻었어요.

내 영상에서 확인할 항목 정리하기 →