자막을 프레임에 맞추기
또는 자막 텍스트를 붙여넣으세요
옵션
모든 자막 블록 경계를 이 프레임 레이트의 가장 가까운 프레임으로 옮깁니다. 25 fps에서는 00:00:02,010이 00:00:02,000이 되고 00:00:02,030은 00:00:02,040이 됩니다. 두 프레임의 정확히 중간에 있는 경계는 위로 올림하므로 00:00:02,020은 00:00:02,040이 됩니다. 비율은 바뀌지 않습니다. 시간축은 길이를 유지한 채 경계만 프레임 위에 놓이므로, 자막 블록 길이는 앞뒤로 반 프레임까지 달라질 수 있습니다. 이것은 파일에 선언된 프레임 레이트가 아니라 결과물에서 경계가 어디에 놓일지만 정합니다.
타이밍을 어떤 프레임 레이트 기준으로 세는지 정합니다. 형식 안내 페이지에서는 MicroDVD가 이 값을 필요로 합니다. 시간을 프레임 번호로 저장하기 때문입니다. 프레임 레이트 페이지에서는 이 파일이 어느 프레임 레이트를 기준으로 만들어졌는지, 즉 자막을 만든 판본의 값을 뜻하며, 페이지의 두 번째 상자에는 이 자막을 사용할 영상의 프레임 레이트를 넣습니다. 흔히 쓰는 값은 23.976, 24, 25, 29.97, 30, 50, 59.94, 60입니다. 잘못 넣으면 시간축 전체가 어긋나고, 프레임 레이트 페이지에서는 고정된 양이 아니라 비율로 어긋납니다.
이 페이지는 모든 cue 경계를 고른 프레임 레이트의 가장 가까운 프레임으로 옮깁니다. 속도는 바꾸지 않습니다. 타임라인 길이는 그대로이고 cue 순서도 그대로이며, 달라지는 것은 각 경계가 어디에 앉는지뿐입니다. 25 fps에서 00:00:02,010은 00:00:02,000이 되고 00:00:02,030은 00:00:02,040이 됩니다. 그래서 각 cue 길이는 양 방향으로 최대 반 프레임까지 바뀔 수 있고, 이 페이지가 일부러 받아들이는 거래입니다.
이 페이지가 하는 일은 결정을 플레이어에게서 가져오는 것입니다. 자막은 밀리초로 저장되지만 대부분의 플레이어와 자막 굽기 도구는 프레임으로 동작하므로 두 프레임 사이에 떨어지는 경계는 그리는 쪽이 반올림해야 하고 소프트웨어마다 다르게 반올림합니다. 한 플레이어는 한 프레임 일찍, 다른 플레이어는 한 프레임 늦게 보여 주어 같은 파일이 두 기계에서 조금씩 어긋나 보입니다. 여기서 한 번 맞추면 그 결정이 사용자의 것이 되고 한 번으로 끝납니다. 이후 모든 경계가 프레임 경계이고 파일을 읽는 모든 도구가 동의합니다.
프레임 레이트 변환이 아닙니다. 자막을 23.976에서 25로 바꾸는 것은 타임라인 전체에 비율을 곱해 자막이 여전히 영상에 맞게 하는 일이고 다른 그룹의 다른 페이지입니다. 이 페이지는 영상을 아예 개입시키지 않습니다. 파일이 이미 맞고 경계만 프레임에 두고 싶다면 맞추면 되고, 영상에 대해 틀렸다면 비율이 먼저 바뀌어야 합니다.
프레임 레이트 상자가 두 개 보이는 것은 서로 다른 질문에 답하기 때문입니다. 하나는 파일을 읽을 때 쓰는 레이트로 MicroDVD 같은 프레임 번호 형식을 이해하려면 반드시 필요합니다. 다른 하나는 맞출 레이트입니다. 자기 레이트를 선언하는 파일에서는 보통 같은 숫자이고, 둘을 혼동하면 조용합니다. 출력은 여전히 프레임 단위로 정확하지만 아무도 요청하지 않은 격자 위에 놓입니다. 모든 처리는 이 브라우저 탭에서 업로드 없이 SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON, CSV에 똑같이 실행됩니다.
예시
모든 경계가 프레임에 앉습니다
입력
1
00:00:02,020 --> 00:00:04,030
Hello there.
2
00:00:07,010 --> 00:00:09,040
Second line.
결과물
1
00:00:02,040 --> 00:00:04,040
Hello there.
2
00:00:07,000 --> 00:00:09,040
Second line.
25 fps에서 경계는 40 ms의 배수에 속합니다. 02,020은 두 배수 사이의 정확히 중간이라 올려서 02,040이 되고, 04,030은 04,040으로 올라가며, 07,010은 07,000으로 내려갑니다. 비율을 곱한 것이 아닙니다. 둘째 cue는 여전히 약 2초이고 두 cue 사이 간격은 프레임 단위로 그대로이지만, 각 cue 길이는 조금 움직였습니다. 2010 ms와 2030 ms가 2000 ms와 2040 ms가 되었습니다.
한 프레임보다 짧은 cue
입력
1
00:00:04,000 --> 00:00:04,010
Squeezed.
2
00:00:06,010 --> 00:00:08,010
A normal one.
결과물
2
00:00:06,000 --> 00:00:08,000
A normal one.
10 ms짜리 cue는 두 경계가 모두 100번 프레임으로 반올림되어 양 끝 시각이 같아지고, 시작한 곳에서 끝나는 cue는 표시할 수 없습니다. 한 프레임으로 늘리지 않고 버린 뒤 세어 보고합니다. 길이를 만들어 넣는 것은 파일이 요청하지 않은 자막을 화면에 올리는 일이기 때문입니다. 25 fps에서는 20 ms보다 짧아야 이 경지에 이르고, 둘째 cue는 스무 배 길어 평소처럼 동작합니다.
분수 프레임 레이트는 길이를 그대로 둘 수 없습니다
입력
1
00:00:01,000 --> 00:00:03,000
Hello there.
결과물
1
00:00:01,001 --> 00:00:03,003
Hello there.
23.976 fps는 프레임당 밀리초가 정수가 아니므로 둥근 초가 프레임 경계가 아니고 양쪽 경계가 움직입니다. 정확히 2000 ms였던 cue가 2002 ms가 됩니다. 모든 경계는 여전히 프레임 위에 있고 그것이 이 페이지의 약속이지만, 원본이 쓰인 둥근 숫자는 사라집니다. 23.976이나 29.97로 맞춘 뒤 타이밍이 그대로 돌아오리라 기대하기 전에 알아 둘 만합니다.
자주 묻는 질문
프레임에 맞추는 것은 프레임 레이트 변환과 무엇이 다른가요?
변환은 타임라인 길이를 바꾸고 맞추기는 경계가 그 위 어디에 놓이는지만 바꿉니다. 24 fps 자막을 25로 바꾸면 모든 타임스탬프에 0.96이 곱해져 영상에 계속 맞고 2초짜리 cue는 1.92초가 됩니다. 맞추기는 그 2초를 2초로 두고 양 끝을 가장 가까운 프레임으로 옮겨 각각 반 프레임 미만으로 바꿉니다.
맞추면 프레임 레이트가 다른 영상에 자막이 맞게 되나요?
아니요. 이 페이지는 영상을 보지 않고 타임라인 길이도 바꾸지 않으므로 영상 레이트가 달라 어긋난 파일은 실행 후에도 똑같이 어긋나 있습니다. 비율을 먼저 구하세요. 프레임 레이트 변환 페이지가 그 일을 합니다. 그리고 납품할 도구가 프레임 위의 경계를 요구한다면 그 뒤에 맞추면 됩니다.
맞출 때 cue 길이가 얼마나 바뀔 수 있나요?
각 경계에서 반 프레임까지이므로 총 한 프레임을 넘지 않습니다. 25 fps에서는 cue당 최대 40 ms, 경계당 20 ms입니다. 23.976이나 29.97에는 프레임당 밀리초가 정수가 아니므로 둥근 값에서 시작하고 끝나는 cue도 움직입니다. 2초짜리 cue가 2002 ms가 됩니다.
페이지를 두 번 실행했는데 둘째에는 아무것도 바뀌지 않았습니다. 맞나요?
맞고, 그래서 대기열에 넣어도 안전합니다. 모든 경계가 프레임 위에 있으면 경계에서 가장 가까운 프레임이 그 경계 자신이므로 두 번째 실행은 파일을 바이트 단위로 그대로 돌려줍니다. 납품을 확인할 때 이 점은 두 번째 실행에서 바뀌는 파일이 첫 번째에 완전히 맞추어지지 않았다는 뜻이기도 합니다. 일어나서는 안 되는 일이지만 값싼 시험입니다.
맞추는 과정에서 자막이 사라질 수 있나요?
반 프레임보다 짧을 때만 그렇습니다. 두 경계가 같은 프레임으로 반올림되어 기록할 cue가 남지 않기 때문입니다. 25 fps에서는 20 ms 미만이고 실제 자막에는 없는 길이입니다. 페이지가 버린 것을 세므로 다운로드가 아니라 보고서를 보세요.
파일이 스스로 선언한 프레임 레이트로 맞춰야 하나요?
자동으로 그럴 필요는 없습니다. 선언은 파일의 프레임 번호를 읽는 방법을 말하고 맞출 레이트는 출력에서 경계가 어디로 가는지를 말합니다. 대부분의 납품에서는 같은 숫자입니다. 다른 레이트로 동작하는 도구를 위해 파일을 준비할 때 둘이 갈라지고, 그때 선언된 레이트를 고르는 것이 조용한 실수입니다. 출력은 여전히 프레임 단위로 정확하지만 아무도 요청하지 않은 격자 위에 있습니다.