본문으로 바로 가기
SubtitleMatrix

SMI를 VTT로 변환

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

이 변환에서 달라지는 것

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

  • 위치

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

  • 형식 고유 내용

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

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

SMI를 VTT(WebVTT)로 바꾸는 페이지입니다. SMI의 SYNC 자막은 VTT의 블록으로 옮겨지고 밀리초 시각과 글자는 유지되지만, 화면 위치와 문서 설정은 VTT 쪽에 대응하는 자리가 없어 사라집니다.

SMI는 `<SYNC Start=4126>`으로 시작을 적고 다음 SYNC가 앞 블록을 끝냅니다. VTT는 `00:00:04.126 --> 00:00:06.000`처럼 두 시각을 한 줄에 적습니다. 변환기는 다음 SYNC의 시작을 앞 블록의 끝으로 써서 VTT의 두 시각을 채웁니다.

사라지는 것은 두 가지입니다. `<STYLE>` 블록의 CSS로 지정한 문단 위치, 그리고 `Class=ENCC`나 `<TITLE>`처럼 cue 바깥에 있던 문서 설정입니다. 자막 글자 안의 강조는 그 줄에 속하므로 남습니다. `&nbsp;`만 든 블록은 자막이 아니라 화면 비우기로 처리되어 VTT에 빈 블록을 만들지 않습니다.

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

예시

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

입력

<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>

결과물

WEBVTT

00:00:01.000 --> 00:00:03.000
Hello there.

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

이 출력에서 버려지는 것은 화면 위치와 형식 고유 구성입니다. 자막 글자와 시각은 줄 단위로 일치합니다.

지저분한 SMI를 VTT로 바꿀 때

입력

<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>

결과물

WEBVTT

00:00:02.500 --> 00:00:09.000
Line one
Line two

00:00:09.000 --> 00:00:12.000
Tom &amp; Jerry

실제 파일에 흔한 손상입니다. BOM, 윈도우 줄바꿈, 읽을 수 없는 SYNC가 섞여도 읽을 수 있는 블록은 모두 살아납니다.

자주 묻는 질문

SMI의 화면 위치가 VTT에서 유지되나요?

아니요. SMI는 `<STYLE>`의 CSS로 문단 위치를 정하지만, 이 변환은 그 CSS를 VTT의 위치 설정으로 옮기지 않습니다. VTT에는 cue별 위치를 적는 문법이 있지만 원본에 그 정보가 없어 새로 만들지 않습니다.

SMI의 STYLE 블록은 VTT의 어느 부분이 되나요?

어디에도 되지 않고 사라집니다. SAMI의 `<STYLE>`은 HTML 문단용 CSS이고, VTT의 `STYLE` 블록은 VTT 전용 문법이라 그대로 옮길 수 없습니다.

SMI를 VTT로 바꾸면 결과 파일은 어떤 모습인가요?

맨 위에 `WEBVTT` 머리말이 붙고, 자막마다 `00:00:04.126 --> 00:00:06.000` 꼴의 타임코드와 텍스트가 이어집니다. SMI의 SYNC 블록 하나가 VTT 블록 하나가 됩니다.

SMI의 Start 시각이 VTT 타임코드로 정확히 옮겨지나요?

네. `Start=4126`은 `00:00:04.126`이 되고 밀리초 값이 그대로입니다. 끝 시각은 다음 SYNC의 시작에서 오며, 마지막 자막은 기본 길이를 받습니다.

SMI의 두 줄 자막은 VTT에서 한 블록으로 남나요?

남습니다. `<br>`로 나뉜 두 줄이 VTT 블록 안의 두 줄이 되고, 플레이어는 한 자막으로 함께 표시합니다.

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

VTT의 위치 설정과 형식 고유 구성이 SMI에 자리가 없어 사라집니다. 지금 방향인 SMI→VTT에서는 위치와 문서 설정을 잃고, 그 손실은 되돌린다고 복구되지 않습니다.

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

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

관련 도구