CSV를 TTML로 변환
또는 자막 텍스트를 붙여넣으세요
이 변환에서 달라지는 것
이 방향에서는 아무것도 잃지 않습니다. 원본 형식의 모든 기능이 대상 형식에 갈 곳이 있습니다.
이 목록은 불러온 특정 파일이 아니라 두 형식의 기능 행렬에서 나옵니다. 어떤 파일은 형식이 허용하지만 행렬이 모델링하지 않는 기능을 쓰고 있다면 더 많이 잃을 수 있습니다.
CSV를 TTML로 바꾸는 이 방향에서는 잃는 것이 없습니다. CSV가 표현하는 모든 것을 TTML이 똑같이 담을 수 있어서 시간축과 줄 바꿈, 글자가 그대로 남고 포장만 달라집니다. 형식이 허용하는 기능을 모두 쓴 CSV라도 마찬가지입니다.
CSV는 시간을 00:00:04.126처럼 적고, TTML도 같은 순간을 같은 모양의 시계 값으로 적습니다. 두 형식 모두 밀리초가 한계라 타임코드가 한 글자도 달라지지 않고, 2.9초짜리 cue는 TTML에서도 2.9초입니다.
표의 행 하나가 begin과 end 속성을 가진 p 요소 하나가 되고, body와 보통 div 안에 들어가며 문서 맨 위에는 XML 선언이 붙습니다. 셀 안의 두 줄은 <br/>로 이어지고, cue는 시작 시간순으로 정렬됩니다. XML 문서라 방송·스트리밍 파이프라인에서 중간 형식으로 쓰입니다.
여러 파일을 넣으면 차례로 변환되어 ZIP 하나로 내려옵니다. 변환은 브라우저 안에서 실행되며 CSV 원본은 기기 밖으로 나가지 않습니다.
예시
일반적인 CSV 파일을 TTML로 변환
입력
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."
결과물
<?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.500">The quick brown fox.</p>
<p begin="00:00:04.000" end="00:00:06.250">Jumps over, the lazy dog.</p>
<p begin="00:00:07.000" end="00:00:09.000">Two lines here.<br/>And a second one.</p> </body>
</tt>
이 결과에서는 아무것도 사라지지 않습니다. 양쪽을 줄 단위로 비교해 보세요.
머리글과 빈 칸이 섞인 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.
결과물
<?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:04.000">Hello there, friend.</p>
<p begin="00:00:05.000" end="00:00:07.000">Second line.</p>
<p begin="00:00:10.000" end="00:00:10.001">End before start.</p>
<p begin="00:00:12.000" end="00:00:14.000">Unquoted comma in text, right here.</p> </body>
</tt>
실제 파일에서 흔한 손상입니다. 줄 바꿈이 섞이고, 공백이 남고, 빈 필드가 있습니다. 위의 깔끔한 예시와 비교해 파서가 무엇을 넘겨주는지 보세요.
자주 묻는 질문
CSV를 TTML로 바꾸면 결과가 어떻게 생겼나요?
cue 번호 없이 자막마다 begin과 end 속성을 가진 p 요소가 되고, body와 보통 div 안에 들어가며 문서 맨 위에는 XML 선언이 붙습니다. CSV의 행 하나가 TTML의 cue 하나가 되어 순서와 글자는 같습니다.
CSV의 시간값은 TTML에서도 정확한가요?
밀리초까지 정확합니다. CSV와 TTML이 같은 순간을 00:00:04.126처럼 같은 모양으로 적으므로 타임코드가 들어온 그대로 나갑니다. 반올림이나 이동이 없어 2.9초짜리 cue는 TTML에서도 2.9초입니다.
CSV 셀 안의 두 줄은 TTML에서 어떻게 되나요?
두 줄 사이에 <br/>이 들어갑니다. TTML이 강제 줄 바꿈을 적는 방식이며, 두 줄이 같은 자막이라는 사실이 유지되어 재생기가 함께 보여 줍니다.
CSV cue 순서는 TTML에서도 유지되나요?
유지되고, 변환 과정에서 시작 시간이 이른 순서로 정렬됩니다. CSV가 행을 뒤섞어 두었다면 TTML 결과에서 순서가 바로잡히며, 이는 내용이 아니라 구조를 바꾸는 일입니다.
TTML을 다시 CSV로 바꾸면 무엇을 잃나요?
스타일, 위치, 형식 고유 정보를 잃습니다. 이 방향은 무손실이지만 반대 방향은 그렇지 않습니다. TTML 머리말의 스타일 표와 레이아웃, metadata는 CSV에 열이 없어 되돌릴 때 사라집니다.
CSV를 TTML로 바꾸면 결과 인코딩은 어떻게 되나요?
원본이 무엇이었든 결과는 UTF-8에 유닉스 줄 바꿈, 바이트 순서 표시 없음입니다. UTF-16이나 윈도우 단일 바이트 인코딩으로 들어온 파일은 읽는 과정에서 디코딩되며, 그 사실은 결과 패널에 표시됩니다.