본문으로 바로 가기
SubtitleMatrix

드롭 프레임을 논드롭으로

타임코드드롭 프레임 타임코드
또는 자막 텍스트를 붙여넣으세요

옵션

30 fps non-drop와 29.97 drop-frame은 같은 시계를 다르게 적고, 이 상자는 파일을 어느 쪽으로 읽고 어느 쪽으로 다시 쓸지를 정합니다. 1시간 지점의 한 자막 블록은 한쪽에서는 01:00:00,000, 다른 쪽에서는 01:00:03,600으로 읽힙니다. 시간당 3.6초 차이는 반올림 오차가 아닙니다. 페이지 제목이 한 방향을 지목하고 이 상자도 그 값만 제시하므로, 받는 파일은 이 페이지가 말하는 그 파일입니다. 텍스트는 달라지지 않습니다. 영상에 맞춰 자막 블록을 다시 맞추지도, 프레임 레이트를 변환하지도 않으며, 매시간 첫 1분 안의 자막 블록은 들어온 그대로 돌아옵니다. 그 구간에서는 버리는 프레임 번호가 없기 때문입니다.

타이밍을 어떤 프레임 레이트 기준으로 세는지 정합니다. 형식 안내 페이지에서는 MicroDVD가 이 값을 필요로 합니다. 시간을 프레임 번호로 저장하기 때문입니다. 프레임 레이트 페이지에서는 이 파일이 어느 프레임 레이트를 기준으로 만들어졌는지, 즉 자막을 만든 판본의 값을 뜻하며, 페이지의 두 번째 상자에는 이 자막을 사용할 영상의 프레임 레이트를 넣습니다. 흔히 쓰는 값은 23.976, 24, 25, 29.97, 30, 50, 59.94, 60입니다. 잘못 넣으면 시간축 전체가 어긋나고, 프레임 레이트 페이지에서는 고정된 양이 아니라 비율로 어긋납니다.

이 페이지는 자막 파일의 모든 타임코드를 29.97 fps 드롭 프레임 표기에서 30 fps 논드롭 프레임 표기로 되돌립니다. 각 시계는 프로그램이 길어질수록 커지는 고정된 폭만큼 앞당겨집니다. 한 시간의 첫 1분 안에서는 0, 한 시간이면 3.6초, 열 시간이면 36초입니다. 대사, cue 번호, cue 순서, 줄바꿈은 파일이 가진 그대로 나옵니다.

이 페이지가 필요한 파일은 드롭 프레임으로 세는 표시기나 덱을 기준으로 찍혔고 그 뒤의 도구는 논드롭으로 읽는 파일입니다. 29.97 소재에서 드롭 프레임은 벽시계에 붙어 있는 표기라 흔한 쪽입니다. 그런 파일을 논드롭으로 읽으면 모든 타임코드가 실제 순간보다 큰 값이 되고, 자막이 일찍 뜨며 프로그램이 진행될수록 점점 더 일찍 뜹니다. 30분 지점의 오차는 1.8초이고 파일 어디에서도 멈추지 않습니다. 그래서 고치는 일은 한 값을 더하는 것이 아니라 모든 시각에 같은 재표기를 적용하고 보정 폭은 cue의 위치가 정하는 일입니다.

시계를 타임코드로 읽는 일은 가장 가까운 30 fps 프레임 눈금에 맞추는 일인데, 드롭 프레임에는 그 눈금 두 개가 없습니다. 매분이 시작할 때 ;00과 ;01 라벨을 건너뛰므로 00:00:59;29 다음이 00:01:00;02입니다. 그래서 들어온 00:01:00,000은 그 표기가 적을 수 없는 순간을 가리키고, 적을 수 있는 마지막 라벨인 00:00:59,933으로 67밀리초 앞당겨집니다. 이것은 오차 허용 범위가 아니라 계산의 실제 경계이며, 두 시간 동안 그런 값이 216개 나옵니다.

맞춤 뒤에 한 프레임보다 짧아지는 cue는 적을 수 없습니다. 양 끝이 같은 눈금에 앉으면 끝이 시작과 같은 cue가 되기 때문입니다. 그런 cue는 조용히 한 프레임으로 늘이지 않고 버린 뒤 위의 손실 보고서에 개수를 셉니다. 프레임 단위로 자른 소재에서만 생기는 일이지만 페이지는 그것이 드물다고 가정하지 않고 개수를 보고하며, 그런 cue가 없는 파일은 아무것도 보고하지 않습니다.

파일은 브라우저 탭 안에서 읽히고 다시 쓰이며 기계를 떠나지 않습니다. SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON, CSV를 받고, MicroDVD는 시각 대신 프레임 번호를 저장하므로 프레임 레이트 상자가 필요합니다. 그 값은 이 변환의 계산에 쓰이지 않습니다.

예시

5분 지점의 파일

입력

1
00:05:00,000 --> 00:05:02,000
The room is dark.

2
00:10:00,000 --> 00:10:03,000
A cold night.

결과물

1
00:04:59,667 --> 00:05:01,667
The room is dark.

2
00:09:59,400 --> 00:10:02,400
A cold night.

파일 전체에 한 숫자를 빼는 것이 아닙니다. 5분 지점에서 시계는 333 ms 앞당겨지고 10분 지점에서는 600 ms 앞당겨집니다. 드롭 프레임이 첫 cue까지 라벨 열 개를, 둘째 cue까지 열여덟 개를 버렸기 때문입니다. 양 끝이 같은 폭으로 움직여 각 cue의 길이는 밀리초까지 유지됩니다. 이동이 아니라 재표기입니다.

한 시간에서 같은 보정

입력

1
01:00:03,600 --> 01:00:06,600
An hour into the programme.

결과물

1
01:00:00,000 --> 01:00:03,000
An hour into the programme.

한 시간 지점에서 드롭 프레임의 01:00:03,600은 논드롭의 01:00:00,000입니다. 건너뛴 라벨 108개, 3600 ms입니다. 결과 첫 줄이 입력 첫 줄보다 정확히 3600 ms 앞인지 보면 페이지를 확인할 수 있고, 드롭 프레임 덱에서 나온 파일은 정각에 앉아야 합니다.

첫 1분 안에 있는 cue

입력

1
00:00:04,000 --> 00:00:06,000
Still early in the file.

2
00:05:00,000 --> 00:05:02,000
This one does move.

결과물

1
00:00:04,000 --> 00:00:06,000
Still early in the file.

2
00:04:59,667 --> 00:05:01,667
This one does move.

한 시간의 첫 1분 동안에는 버려지는 라벨이 없어 두 표기가 그 60초를 같게 적으므로 첫 cue는 그대로 남습니다. 5분 지점의 둘째 cue는 움직입니다. 움직이지 않은 cue 옆에 움직인 cue가 있는 것이 이 파일의 올바른 결과이고 멈춘 실행이 아닙니다. 보정은 정각에서 0이고 첫 1분 경계부터 커집니다.

자주 묻는 질문

자막이 늦게가 아니라 왜 일찍 나오나요?

파일의 시계가 가리키는 순간보다 큰 값이었기 때문입니다. 논드롭은 29.97 fps가 초당 30프레임을 준다고 보고 라벨 30개를 세므로 실제 시간보다 앞서 가고, 드롭 프레임은 매분 라벨 두 개를 건너뛰어 벽시계에 붙습니다. 드롭 프레임 덱에서 읽은 시계를 논드롭으로 해석하면 실제보다 뒤를 가리키므로 그 초과분을 빼는 것이 이 페이지입니다. 5분에 333 ms, 한 시간에 3600 ms, 열 시간에 36000 ms입니다. 한 시간의 첫 1분 안에서는 0이므로 보정은 첫 1분 경계에서 시작하고 어떤 시계도 00:00:00 아래로 내려가지 않습니다.

드롭 프레임에 없는 타임코드가 들어오면 어떻게 되나요?

적을 수 있는 마지막 라벨로 당겨집니다. 드롭 프레임의 매분에는 ;00과 ;01이 없으므로 00:01:00,000과 00:01:00,010은 그 표기로 적을 수 없고 00:00:59,933으로 67밀리초 앞당겨집니다. 이 페이지에서 결과가 정확한 재표기가 아닌 유일한 자리이고, 버려지는 분당 라벨 두 개, 두 시간에 216개로 한정되어 있습니다.

cue가 파일에서 사라질 수도 있나요?

한 프레임, 33.37 ms보다 짧은 cue만 그럴 수 있습니다. 두 가지가 cue를 한 프레임으로 몰아넣습니다. 방금 설명한 맞춤으로 00:01:00,000부터 00:01:00,010까지의 10밀리초 cue가 양 끝 모두 00:00:59,933이 되는 경우와 들어올 때부터 한 프레임보다 짧았던 cue입니다. 시작과 끝이 같은 cue는 쓸 수 없으므로 버리고 그 개수를 작업 영역 위의 손실 보고서에 적습니다. 그런 cue가 없는 파일은 아무것도 보고하지 않고 보통은 그쪽입니다.

시각 값 말고 파일에서 바뀌는 것이 있나요?

없습니다. cue 번호, 순서, 모든 줄의 텍스트, cue 안의 강제 줄바꿈, 전체 cue 수는 파일의 것이고 그대로 남습니다. 페이지는 cue마다 같은 두 숫자를 다른 표기로 다시 씁니다. 시계가 이제 논드롭이라고 파일 어딘가에 기록하지도 않습니다. 여기서 읽는 형식 중 그런 값을 담을 필드가 있는 것은 없고 넣기 전 파일도 말하지 않았습니다.

프레임 레이트 상자에는 무엇을 넣어야 하나요?

영상이 실제로 가진 값이면 무엇이든 되고 이 변환에는 영향을 주지 않습니다. 페이지 이름의 30과 29.97은 영상의 프레임 레이트가 아니라 타임코드 문자열에 적히는 세는 방식입니다. 상자가 필요한 이유는 MicroDVD가 시각 대신 프레임 번호를 저장해 프레임 레이트 없이는 읽을 수 없기 때문입니다.

이 결과에 반대 페이지를 실행하면 원본이 돌아오나요?

드롭 프레임이 적을 수 없는 자리에 걸린 시각이 없었다면 바이트 단위로 돌아옵니다. 두 페이지는 같은 계산을 반대 방향으로 읽는 것이고, 이쪽이 커지는 폭을 빼면 저쪽이 같은 폭을 더합니다. 폭은 고정 오프셋이 아니라 각 cue의 위치가 정합니다. 예외는 맞춤이 일어난 00:01:00,000이 00:00:59,933으로 나온 경우이고, 그 한 부류의 시각에서만 왕복이 성립하지 않습니다.

관련 도구