본문으로 바로 가기
SubtitleMatrix

TTML을 SBV로 변환

형식 변환TTML / DFXP
또는 자막 텍스트를 붙여넣으세요

이 변환에서 달라지는 것

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

  • 스타일

    모든 스타일(굵게, 기울임, 색, 외곽선, 그림자)

  • 위치

    화면 위치 지정(모든 자막 블록이 기본 위치로 돌아갑니다)

  • 형식 고유 내용

    원본 형식이 자막 블록 밖에 두는 내용(자막 블록이 아닌 구획, 머리말 텍스트, 자막 블록별 설정, 주석 처리된 이벤트) — 대상 형식에는 들어갈 자리가 없습니다

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

TTML을 SBV로 바꾸면 시간과 글자는 그대로 남고, 스타일·위치·형식 고유 정보는 빠집니다. SBV는 번호와 머리글 없이 시작·끝 시간 한 줄과 본문으로만 이루어진 가벼운 형식이라, YouTube 자막을 손으로 다루던 사람에게 익숙합니다.

TTML의 begin과 end는 00:00:04.126이고 SBV도 같은 순간을 0:00:04.126으로 적습니다. 밀리초 값이 그대로 넘어가며 반올림이 없습니다. dur, 1.5s, 프레임 표기는 TTML을 읽을 때 이미 시계로 환산됩니다.

문단 안의 굵기·기울임·밑줄·색은 <i>, <b>, <u>, <font color=…> 태그로 본문에 남습니다. 반면 <styling>과 <layout> 표, XML 선언, <metadata>, region·style 참조는 SBV에 자리가 없습니다. 두 줄 자막은 그대로 두 줄로 나오고, cue는 시작 시간순으로 정렬됩니다.

대기열에 여러 파일을 넣으면 차례로 변환되어 ZIP 하나로 내려옵니다. SBV는 자막 파일 자체에 메타데이터를 거의 두지 않으므로, 원본의 스타일을 나중에 복원할 계획이라면 TTML 원본을 함께 보관하세요. 변환은 브라우저 안에서 실행됩니다.

예시

일반적인 TTML 파일을 SBV로 변환

입력

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
  <head>
    <styling>
      <style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div>
      <p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
      <p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
    </div>
  </body>
</tt>

결과물

0:00:01.000,0:00:03.500
Hello <i>there</i>.

0:00:03.500,0:00:06.000
How are you?
Fine, thanks.

이 결과에서 사라지는 것: 스타일, 위치, 형식 고유 정보. 나머지는 줄 단위로 같습니다.

까다로운 입력에 같은 변환 적용

입력

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    ttp:frameRate="25" xml:lang="en">
  <body>
    <div>
      <p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
      <p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
      <p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
      <p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom &amp; Jerry.</p>
    </div>
  </body>
</tt>

결과물

0:00:01.500,0:00:03.500
Loaded from an offset and a duration.

0:00:04.000,0:00:06.500
A coarser clock spelling.

0:00:07.000,0:00:08.480
Frames, at 25fps.

0:00:09.000,0:00:11.000
<font color="#FF0000">Half-open</font> and Tom &amp; Jerry.

실제 파일에서 흔한 손상입니다. 줄 바꿈이 섞이고, 공백이 남고, 빈 필드가 있습니다. 위의 깔끔한 예시와 비교해 파서가 무엇을 넘겨주는지 보세요.

자주 묻는 질문

TTML의 굵기와 기울임은 SBV에서 살아남나요?

문단 안의 강조는 살아남고 스타일 표는 그렇지 않습니다. 글자 일부에 붙은 굵기·기울임·밑줄·색은 SBV 본문에 <i>, <b>, <u>, <font color=…> 태그로 적힙니다. TTML이 문서 전체에 선언한 글꼴, 크기, 외곽선, 그림자, 여백은 SBV에 담을 곳이 없습니다.

TTML의 화면 위치는 SBV로 넘어가나요?

넘어가지 않습니다. SBV에는 위치를 적는 자리가 없어 region과 style 참조가 버려지고, 모든 자막이 재생기의 기본 위치로 돌아갑니다. 대부분 화면 아래쪽 가운데입니다.

TTML의 <styling>·<layout> 표는 SBV에서 어떻게 되나요?

사라집니다. XML 선언, 네임스페이스, 이름 있는 스타일과 영역, <metadata>, <p>의 style·region 참조가 SBV에 대응하는 자리를 갖지 못합니다. 문단 안쪽 span의 강조만 텍스트 태그로 남습니다.

TTML을 SBV로 바꾸면 결과가 어떻게 생겼나요?

cue 번호도 머리글도 없이, 시작과 끝 시간이 한 줄에 적히고 그 아래에 본문이 옵니다. TTML의 cue 하나가 SBV의 cue 하나가 되며 순서와 글자는 같습니다.

TTML 시간값은 SBV에서 정확한가요?

밀리초까지 정확합니다. TTML의 00:00:04.126은 SBV의 0:00:04.126이 되고, 반올림이나 시간축 이동이 없습니다. 2.9초짜리 자막은 SBV에서도 2.9초입니다.

두 줄짜리 TTML 자막은 SBV에서 어떻게 되나요?

두 줄이 위아래로 그대로 나옵니다. 두 줄이 한 자막이라는 사실이 유지되어 재생기가 함께 보여 주며, 다시 TTML로 읽어도 한 cue입니다.

SBV를 다시 TTML로 바꾸면 이 방향의 손실이 복원되나요?

복원되지 않습니다. SBV에서 TTML로 가는 방향 자체는 손실이 없지만, SBV에는 이 방향에서 버린 스타일·위치·머리말 정보가 기록되지 않습니다. 원본 TTML이 있어야만 되살릴 수 있습니다.

관련 도구