본문으로 바로 가기
SubtitleMatrix

SMI를 TTML로 변환

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

이 변환에서 달라지는 것

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

  • 형식 고유 내용

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

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

SMI를 TTML로 바꾸는 페이지입니다. TTML은 XML로 자막을 적는 표준 형식이라 SMI의 자막 블록과 두 시각, 텍스트를 그대로 담을 수 있습니다. 다만 SAMI의 스타일 문서와 채널 설정은 TTML의 cue 모델에 들어가지 않아 사라집니다.

SMI는 `Start=4126`으로 시작을 적고 다음 SYNC가 앞 블록을 끝냅니다. TTML은 `begin="00:00:04.126"`과 `end` 속성으로 두 시각을 적습니다. 밀리초 값이 그대로이고 반올림이 없습니다.

자막 하나는 `<p>` 요소 하나가 되고 `<body>` 안에 들어갑니다. 두 줄짜리 자막은 `<br/>`로 이어집니다. `<STYLE>` 블록의 CSS, `<TITLE>`, `Class=ENCC`는 TTML로 옮겨지지 않으며, `&nbsp;`만 든 블록은 자막으로 만들지 않습니다.

파일은 업로드되지 않고 브라우저 안에서 처리됩니다. 여러 파일을 순서대로 변환하고 결과를 ZIP 하나로 받을 수 있습니다. ZIP은 파일별 하위 폴더 없이 풀립니다.

예시

전형적인 SMI 파일을 TTML로 변환

입력

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

결과물

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:01.000" end="00:00:03.000">Hello there.</p>
<p begin="00:00:03.500" end="00:00:06.000">How are you?<br/>Fine, thanks.</p>  </body>
</tt>

이 출력에서 버려지는 것은 형식 고유 구성입니다. 각 p 요소의 begin과 end가 원래 두 시각과 맞는지 확인해 보세요.

지저분한 SMI를 TTML로 바꿀 때

입력

<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom &amp; Jerry
<SYNC Start=12000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

결과물

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:02.500" end="00:00:09.000">Line one<br/>Line two</p>
<p begin="00:00:09.000" end="00:00:12.000">Tom &amp; Jerry</p>  </body>
</tt>

실제 파일에 흔한 손상입니다. BOM, 윈도우 줄바꿈, 읽을 수 없는 SYNC가 섞여도 읽을 수 있는 자막은 모두 p 요소가 됩니다.

자주 묻는 질문

SAMI의 STYLE 블록은 TTML에서 어디로 가나요?

남지 않습니다. SMI의 `<STYLE>`은 HTML 문단용 CSS이고 TTML의 스타일은 다른 문법이라 그대로 옮길 수 없습니다. 출력에는 원본 CSS가 들어가지 않습니다.

SMI를 TTML로 바꾸면 자막은 어떤 요소가 되나요?

`<p>` 요소 하나가 자막 하나입니다. `begin`과 `end` 속성에 두 시각이 들어가고 텍스트는 요소 내용으로 들어가며 전체가 `<body>` 안에 놓입니다.

SMI의 Start 시각이 TTML에서 밀리초까지 같은가요?

네. `Start=4126`이 `begin="00:00:04.126"`이 되고, 끝 시각도 다음 SYNC의 시작에서 와 `end`에 그대로 들어갑니다. 반올림이 없습니다.

SMI의 두 줄 자막은 TTML에서 어떻게 이어지나요?

한 `<p>` 안에서 `<br/>`로 이어집니다. TTML의 강제 줄바꿈 표기이며, 두 줄은 같은 자막 요소에 속해 함께 표시됩니다.

SMI를 TTML로 바꿀 때 자막 순서는 어떻게 되나요?

시작 시각이 이른 순서로 p 요소가 놓입니다. 원본이 뒤섞여 있었다면 정렬되어 나오고, 이는 파일 구조를 바로잡는 의도된 변화입니다.

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

TTML에 스타일이나 위치 정보가 있으면 SMI에 자리가 없어 사라집니다. 지금 방향인 SMI→TTML에서는 문서 설정만 잃고, 그 정보는 원본 SMI 파일에만 남습니다.

SMI를 TTML로 저장하면 인코딩은 무엇인가요?

출력은 UTF-8, 유닉스 줄바꿈, BOM 없음입니다. XML 선언에도 UTF-8이 적히므로 받은 파일을 어떤 도구로 열어도 인코딩을 잘못 짚지 않습니다.

관련 도구