본문으로 바로 가기
SubtitleMatrix

CSV를 SMI로 변환

또는 자막 텍스트를 붙여넣으세요

이 변환에서 달라지는 것

이 방향에서는 아무것도 잃지 않습니다. 원본 형식의 모든 기능이 대상 형식에 갈 곳이 있습니다.

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

CSV를 SMI로 바꾸는 이 방향에서는 잃는 것이 없습니다. CSV가 표현하는 모든 것을 SMI가 똑같이 담을 수 있어서 시간축과 줄 바꿈, 글자가 그대로 남습니다. 표의 행 하나가 SYNC 태그 하나가 될 뿐, 사라지는 정보는 없습니다.

CSV는 시간을 00:00:04.126처럼 천분의 1초까지 적고, SMI는 같은 순간을 Start=4126처럼 밀리초 정수로 적습니다. 두 형식 모두 그보다 잘게 나누지 않으므로 값이 반올림되거나 이동하지 않습니다. SMI에는 끝 시각을 적는 자리가 없어 화면을 비우는 블록으로 끝을 표현합니다.

표의 행 하나가 화면 내용을 통째로 바꾸는 SYNC 하나가 되고, 셀 안의 두 줄은 <br>로 이어집니다. cue는 시작 시간순으로 정렬되며, 결과는 HTML과 비슷한 태그를 쓰지만 독립 파일이라 서버 없이 재생됩니다.

여러 파일을 넣으면 차례로 변환되어 ZIP 하나로 내려옵니다. 변환은 브라우저 안에서 실행되며 CSV 원본은 업로드되지 않습니다. SAMI를 지원하지 않는 재생기라면 VTT를 고르세요.

예시

일반적인 CSV 파일을 SMI로 변환

입력

start,end,text
00:00:01.000,00:00:03.500,The quick brown fox.
00:00:04.000,00:00:06.250,"Jumps over, the lazy dog."
00:00:07.000,00:00:09.000,"Two lines here.
And a second one."

결과물

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>The quick brown fox.
<SYNC Start=3500>
<P>&nbsp;
<SYNC Start=4000>
<P>Jumps over, the lazy dog.
<SYNC Start=6250>
<P>&nbsp;
<SYNC Start=7000>
<P>Two lines here.<br>And a second one.
<SYNC Start=9000>
<P>&nbsp;
</BODY>
</SAMI>

이 결과에서는 아무것도 사라지지 않습니다. 양쪽을 줄 단위로 비교해 보세요.

머리글과 빈 칸이 섞인 CSV를 같은 방식으로 변환

입력

id,start,end,note,text
1,00:00:01,000,00:00:04,000,cue one,"Hello there, friend."
2,00:00:05.000,00:00:07.000,cue two,Second line.
bad,notatime,00:00:09.000,cue three,Unreadable start.
4,00:00:10.000,00:00:09.000,cue four,End before start.
5,00:00:12.000,00:00:14.000,cue five,Unquoted comma in text, right here.

결과물

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there, friend.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P>Second line.
<SYNC Start=7000>
<P>&nbsp;
<SYNC Start=10000>
<P>End before start.
<SYNC Start=10001>
<P>&nbsp;
<SYNC Start=12000>
<P>Unquoted comma in text, right here.
<SYNC Start=14000>
<P>&nbsp;
</BODY>
</SAMI>

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

자주 묻는 질문

CSV를 SMI로 바꾸면 결과가 어떻게 생겼나요?

cue 번호도 타임코드 줄도 없이 자막마다 SYNC 태그와 그 아래 P 요소가 옵니다. SYNC가 화면 내용을 통째로 바꾸기 때문에 cue 뒤에는 화면을 비우는 블록이 붙습니다. CSV의 행 하나가 SMI의 cue 하나가 됩니다.

CSV의 시간값은 SMI에서도 정확한가요?

밀리초까지 정확합니다. CSV의 00:00:04.126은 SMI의 Start=4126이 되고, 두 형식 모두 그보다 잘게 나누지 않으므로 값이 반올림되거나 이동하지 않습니다. 2.9초짜리 cue는 SMI에서도 2.9초입니다.

CSV 셀 안의 두 줄은 SMI에서 어떻게 되나요?

두 줄 사이에 <br>이 들어갑니다. SAMI가 강제 줄 바꿈을 적는 방식이며, 두 줄이 같은 자막이라는 사실이 유지되어 재생기가 함께 보여 줍니다.

CSV cue 순서는 SMI에서도 유지되나요?

유지되고, 변환 과정에서 시작 시간이 이른 순서로 정렬됩니다. CSV가 행을 뒤섞어 두었다면 SMI 결과에서 순서가 바로잡히며, 이는 내용이 아니라 구조를 바꾸는 일입니다.

SMI를 다시 CSV로 바꾸면 무엇을 잃나요?

스타일, 위치, 형식 고유 정보를 잃습니다. 이 방향은 무손실이지만 반대 방향은 그렇지 않습니다. SMI에 태그로 남은 강조나 페이지가 정한 위치는 CSV에 열이 없어 되돌릴 때 사라집니다.

CSV를 SMI로 바꾸면 결과 인코딩은 어떻게 되나요?

원본이 무엇이었든 결과는 UTF-8에 유닉스 줄 바꿈, 바이트 순서 표시 없음입니다. UTF-16이나 윈도우 단일 바이트 인코딩으로 들어온 파일은 읽는 과정에서 디코딩되며, 그 사실은 결과 패널에 표시됩니다.

관련 도구