본문으로 바로 가기
SubtitleMatrix

MicroDVD를 JSON으로 변환

형식 변환MicroDVD (SUB)
또는 자막 텍스트를 붙여넣으세요

옵션

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

이 변환에서 달라지는 것

1가지가 버려지거나 결정이 필요합니다

  • 프레임 레이트

    원본이 시간을 프레임 번호로 저장합니다 — 모든 타임스탬프가 입력한 프레임 레이트에 따라 달라집니다

이 목록은 불러온 특정 파일이 아니라 두 형식의 기능 행렬에서 나옵니다. 어떤 파일은 형식이 허용하지만 행렬이 모델링하지 않는 기능을 쓰고 있다면 더 많이 잃을 수 있습니다.

MicroDVD를 JSON으로 바꾸는 페이지입니다. 프레임 쌍 하나가 cue 객체 하나가 되고 시작과 끝은 밀리초 정수로, 텍스트는 줄 배열로 들어갑니다. 프레임을 시각으로 바꿔야 하므로 영상의 프레임 레이트가 필요하고, 입력값이 파일 선언보다 우선합니다.

MicroDVD의 `{100}{150}`은 25fps에서 4초에서 6초까지입니다. JSON에서는 `start: 4000`, `end: 6000`이 되고, 출력 객체에는 계산에 쓴 `fps` 값도 함께 적힙니다. 이 값은 참고용이며 cue의 시각은 이미 밀리초로 바뀌어 있습니다.

이 방향에서 잃는 것은 프레임 레이트입니다. 프레임 번호 자체는 cue에 남지 않고, 세로 막대(`|`)는 `lines` 배열의 두 원소가 됩니다. 파일 첫 줄의 `{1}{1}25` 같은 선언은 입력값이 비었을 때만 쓰이고, 선언도 없으면 25fps로 가정합니다.

파일은 업로드되지 않고 브라우저 안에서 처리됩니다. 여러 편을 한 번에 넣으면 각각 변환되어 ZIP 하나로 내려옵니다. ZIP은 파일별 하위 폴더 없이 풀립니다.

예시

전형적인 MicroDVD 파일을 JSON으로 변환

입력

{1}{1}25
{100}{150}The quick brown fox jumps over the lazy dog.
{200}{260}Faster than|the last one.

결과물

{
  "version": 1,
  "fps": 25,
  "cues": [
    {
      "start": 4000,
      "end": 6000,
      "lines": [
        "The quick brown fox jumps over the lazy dog."
      ]
    },
    {
      "start": 8000,
      "end": 10400,
      "lines": [
        "Faster than",
        "the last one."
      ]
    }
  ]
}

이 출력에서 버려지는 것은 프레임 레이트입니다. 프레임 번호가 밀리초 정수로 바뀌고 글자는 lines에 대응합니다.

지저분한 MicroDVD를 JSON으로 바꿀 때

입력

{1}{1}23.976
{0100}{0150}Leading zeros in the frame numbers.
[INFORMATION]
{300}{340}An unrecognized line above was kept in place.
{400}{450}Trailing spaces are kept.   

결과물

{
  "version": 1,
  "fps": 25,
  "cues": [
    {
      "start": 4000,
      "end": 6000,
      "lines": [
        "Leading zeros in the frame numbers."
      ]
    },
    {
      "start": 12000,
      "end": 13600,
      "lines": [
        "An unrecognized line above was kept in place."
      ]
    },
    {
      "start": 16000,
      "end": 18000,
      "lines": [
        "Trailing spaces are kept.   "
      ]
    }
  ]
}

실제 파일에 흔한 손상입니다. BOM, 윈도우 줄바꿈, 앞자리 0, 알 수 없는 줄이 섞여도 읽을 수 있는 자막은 모두 cue가 됩니다.

자주 묻는 질문

MicroDVD를 JSON으로 바꿀 때 프레임 레이트는 어떻게 정해지나요?

페이지 입력값이 먼저이고, 비어 있으면 파일 첫 줄의 선언, 그것도 없으면 25fps입니다. 입력값이 있으면 파일 선언보다 우선하며, 계산에 쓴 값이 출력의 `fps` 필드에 적힙니다.

MicroDVD의 프레임 100은 JSON에서 어떤 값이 되나요?

25fps에서 `start: 4000`입니다. 150프레임은 `end: 6000`이 됩니다. 두 값 모두 밀리초 정수라 프로그램에서 바로 계산에 쓸 수 있습니다.

MicroDVD를 JSON으로 바꾸면 fps 필드는 왜 남나요?

계산에 쓴 프레임 레이트를 참고용으로 적어 두는 것입니다. cue의 시각은 이미 밀리초로 바뀌어 있어 fps가 없어도 읽을 수 있지만, 나중에 프레임 단위로 되돌릴 때 출발점이 됩니다.

MicroDVD의 세로 막대는 JSON에서 어떻게 표현되나요?

`lines` 배열의 원소 두 개가 됩니다. `Faster than|the last one.`은 두 문자열로 나뉘어 같은 cue에 속하고, 다시 MicroDVD로 만들면 막대로 돌아갑니다.

MicroDVD의 첫 줄 {1}{1}25는 JSON에 cue로 들어가나요?

들어가지 않습니다. 프레임 레이트 선언이라 파서가 값을 읽어 계산과 `fps` 필드에만 쓰고 cue로 만들지 않습니다. 빈 cue도 생기지 않습니다.

JSON을 다시 MicroDVD로 바꾸면 무엇이 사라지나요?

JSON에 스타일이나 위치 정보가 있으면 MicroDVD에 자리가 없어 사라집니다. 지금 방향인 MicroDVD→JSON에서는 프레임 번호만 잃고, fps 값은 출력에 남습니다.

MicroDVD를 JSON으로 저장하면 인코딩은 무엇인가요?

출력은 UTF-8, 유닉스 줄바꿈, BOM 없음입니다. 원본 MicroDVD의 인코딩과 무관하며, UTF-16 입력은 읽는 단계에서 해독되어 결과 패널에 표시됩니다.

관련 도구