본문으로 바로 가기
SubtitleMatrix

SMI 자막 형식 안내

형식 변환SAMI (SMI)

이 형식이 표현할 수 있는 것

텍스트 스타일
굵게와 기울임
화면 위치 지정
예
가라오케 타이밍
아니요
자막 블록 안의 줄 바꿈
예
시간축
모든 자막 블록의 시작과 종료 시간
타이밍 해상도
1 ms
시간을 프레임 번호로 저장
아니요
오른쪽에서 왼쪽으로 쓰는 텍스트
예

예시

전형적인 SMI 파일과 그것에서 읽어 낸 내용

파일

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

담긴 내용

2 cues, 3 lines of text

  Start=1000  =  00:00:01.000 → 00:00:03.000
    Hello there.
    [Class=ENCC]
  Start=3500  =  00:00:03.500 → 00:00:06.000
    How are you?
    Fine, thanks.
    [Class=ENCC]

Outside the cues:
  head       a <STYLE> block with CSS for the paragraphs, kept as it came in
  cue ends   the next <SYNC> tag — a SAMI file writes no end time of its own
  clearing   a <P>&nbsp; block blanks the screen; the two here are kept as clearing blocks, not turned into cues

오른쪽은 변환된 파일이 아니라 이 사이트가 왼쪽에서 읽어 낸 내용이며, 이 파일의 모든 변환이 여기서 출발합니다.

지저분한 SMI 파일에서도 읽어 낸 내용

파일

<SAMI>
<BODY>
<SYNC Start=abc>
<P Class=ENCC>this block's start cannot be read
<SYNC Start=2000>
<SYNC Start=4000>
<P>no attributes here<br>second line
<SYNC Start="6000">
some loose text before any P
</BODY>
</SAMI>

담긴 내용

3 cues, 3 lines of text

  Start=2000  =  00:00:02.000 → 00:00:04.000
    (no text)
  Start=4000  =  00:00:04.000 → 00:00:06.000
    no attributes here
    second line
  Start=6000  =  00:00:06.000 → 00:00:08.000
    some loose text before any P

Outside the cues:
  head       no <STYLE> block and no <TITLE> — just the <SAMI> and <BODY> tags
  cue ends   the next <SYNC> tag; the last cue has none after it, so its end time was given a default
  loose text text between two <SYNC> tags that belongs to no <P> is kept and attached to the cue open at that point

Reported while reading — repaired or skipped, never silently:
  1 × SYNC blocks whose start time could not be read (they were skipped)
  1 × the last cue has no following timestamp, so its end time was generated

실제 파일에는 BOM, 윈도우 줄바꿈, 읽을 수 없는 SYNC, P 바깥의 글자가 섞입니다. 어느 것도 예외를 던지지 않고, 이해할 수 없는 부분은 조용히 버리지 않고 보고합니다.

SAMI (SMI) → 다른 형식으로 변환

각 페이지는 전부 브라우저 안에서 실행됩니다. 라벨은 그 방향에서 무엇을 잃는지 미리 알려 줍니다.

이 형식으로 변환하기

SAMI(SMI)는 마이크로소프트가 만든 자막 형식으로, HTML 조각 안에 `<SYNC>` 태그를 두어 시간마다 화면 내용을 바꿉니다. 이 페이지는 SMI가 무엇을 담고 무엇을 담지 못하는지, 그리고 SMI로부터 또는 SMI로 변환할 수 있는 모든 형식을 정리한 참고 페이지입니다.

SMI는 시작 시각만 적습니다. `<SYNC Start=4126>`은 4.126초를 뜻하고, 그 블록은 다음 SYNC가 나올 때까지 화면에 남습니다. 그래서 자막의 끝 시각은 형식이 따로 적지 않고 다음 시작이 대신합니다. `&nbsp;`만 든 `<P>` 블록은 화면을 비우는 표시이며 자막으로 세지 않습니다.

스타일은 두 곳에 나뉩니다. 글자 안의 `<b>`, `<i>`, `<u>`, `<font color>`는 자막 자체에 속하고, `<STYLE>` 블록의 CSS는 문단의 글꼴·크기·색·위치를 정합니다. `<TITLE>`과 `Class=ENCC` 같은 채널 표시도 cue 바깥에 있습니다. 이 바깥 정보들은 cue 모델이 없는 형식으로 갈 때 사라지며, 그래서 SMI에는 무손실로 갈 수 있는 방향이 하나도 없습니다.

모든 변환은 브라우저 안에서 실행됩니다. 파일은 업로드되지 않고 가입도 필요 없어, 비밀 유지 계약이 걸린 자료나 방송 금지 기간의 자막도 기기 밖으로 나가지 않습니다.

자주 묻는 질문

SMI 파일이란 무엇인가요?

마이크로소프트의 SAMI 형식입니다. HTML 조각 안에 `<SYNC Start=…>` 태그를 두고 그 아래 `<P>`에 자막 글자를 적습니다. 윈도우 미디어 플레이어와 그 시대의 DVD·방송 도구가 읽었고, 지금도 아카이브 자료에서 만납니다.

SMI는 스타일을 저장하나요?

일부만 저장합니다. 글자 안의 `<b>`, `<i>`, `<u>`, `<font color>`는 자막에 속하고, `<STYLE>` 블록의 CSS는 문단의 글꼴·크기·색·위치를 정합니다. 다만 이 CSS는 cue 모델 바깥이라 다른 형식으로 갈 때 대개 사라집니다.

SMI의 자막마다 시작과 끝이 모두 있나요?

시작만 직접 적고 끝은 다음 SYNC가 대신합니다. `Start=4126`은 4.126초를 뜻하며 밀리초까지 정확합니다. 마지막 자막 뒤에 SYNC가 없으면 끝 시각은 기본값으로 생성됩니다.

SMI를 손실 없이 바꿀 수 있는 형식이 있나요?

없습니다. SMI는 CSS, TITLE, Class 같은 cue 바깥 정보를 담고 있어, 그 자리가 없는 형식으로 가면 무언가가 사라집니다. 각 변환 페이지가 자기 손실 목록을 먼저 밝힙니다.

SAMI 파일에서 cue 바깥에는 무엇이 남나요?

`<STYLE>` 블록의 CSS, `<TITLE>`, 그리고 `Class=ENCC`처럼 문단을 CSS 규칙에 연결하는 속성입니다. 이들은 자막 블록 모델에 들어가지 않아 SRT나 SBV로 갈 때 남지 않습니다.