TTML을 TXT로 변환
또는 자막 텍스트를 붙여넣으세요
이 변환에서 달라지는 것
5가지가 버려지거나 결정이 필요합니다
- 타이밍
시간축 전체(결과 형식은 타이밍을 전혀 기록하지 않습니다)
- 스타일
모든 스타일(굵게, 기울임, 색, 외곽선, 그림자)
- 위치
화면 위치 지정(모든 자막 블록이 기본 위치로 돌아갑니다)
- 줄 바꿈
줄 바꿈(여러 줄 자막 블록이 한 줄로 합쳐집니다)
- 형식 고유 내용
원본 형식이 자막 블록 밖에 두는 내용(자막 블록이 아닌 구획, 머리말 텍스트, 자막 블록별 설정, 주석 처리된 이벤트) — 대상 형식에는 들어갈 자리가 없습니다
이 목록은 불러온 특정 파일이 아니라 두 형식의 기능 행렬에서 나옵니다. 어떤 파일은 형식이 허용하지만 행렬이 모델링하지 않는 기능을 쓰고 있다면 더 많이 잃을 수 있습니다.
TTML을 TXT로 바꾸면 자막의 시간축이 완전히 사라집니다. 남는 것은 줄 순서와 글자뿐입니다. 대본이나 번역 원문처럼 시간이 필요 없는 곳에 쓰는 방향이며, 다시 자막으로 되돌릴 때는 시간을 새로 만들어야 합니다.
TTML은 begin과 end로 00:00:04.126을 적지만 TXT에는 시간을 적는 자리가 아예 없습니다. 40번째 줄은 그대로 40번째 줄이지만, 그 줄이 몇 초에 화면에 나오는지는 파일 어디에도 남지 않습니다.
스타일과 위치, 줄 묶음도 사라집니다. <span>의 색과 <styling> 표, <layout> 영역, XML 머리말이 모두 빠지고, 두 줄짜리 자막은 두 줄로 풀리면서 같은 cue라는 사실도 잃습니다. 다시 읽으면 자막 두 개가 됩니다.
여러 파일을 넣으면 차례로 변환되어 ZIP 하나로 내려옵니다. 텍스트만 남기므로 검색과 교정에는 편하지만, 나중에 영상에 다시 맞출 계획이라면 원본 TTML을 보관하세요. 변환은 브라우저 안에서 실행됩니다. 다시 자막으로 만들 계획이라면 TTML 원본을 함께 보관하세요.
예시
일반적인 TTML 파일을 TXT로 변환
입력
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
<head>
<styling>
<style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
</styling>
<layout>
<region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
</layout>
</head>
<body>
<div>
<p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
</div>
</body>
</tt>
결과물
Hello there.
How are you?
Fine, thanks.
이 결과에서 사라지는 것: 시간, 스타일, 위치, 줄 묶음, 형식 고유 정보. 나머지는 줄 단위로 같습니다.
까다로운 입력에 같은 변환 적용
입력
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
ttp:frameRate="25" xml:lang="en">
<body>
<div>
<p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
<p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
<p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
<p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom & Jerry.</p>
</div>
</body>
</tt>
결과물
Loaded from an offset and a duration.
A coarser clock spelling.
Frames, at 25fps.
Half-open and Tom & Jerry.
실제 파일에서 흔한 손상입니다. 줄 바꿈이 섞이고, 공백이 남고, 빈 필드가 있습니다. 위의 깔끔한 예시와 비교해 파서가 무엇을 넘겨주는지 보세요.
자주 묻는 질문
TTML의 시간 정보는 TXT에서 어디로 갔나요?
없어졌습니다. TXT는 글자만 담고 순간을 적는 자리가 없습니다. TTML 줄의 순서는 유지되어 40번째 줄이 40번째 줄로 남지만, 그 줄이 언제 화면에 나타나는지는 결과 파일 어디에도 적히지 않습니다.
TTML의 굵기·기울임·색은 TXT에서 남나요?
남지 않습니다. TXT는 어떤 스타일도 저장하지 않으므로 문단 안 span의 색과 <styling> 표가 가리키던 이름 있는 스타일이 모두 빠지고, 모든 줄이 평문으로 적힙니다. 글자 자체는 바뀌지 않습니다.
TTML의 화면 위치는 TXT로 넘어가나요?
넘어가지 않습니다. TXT에는 위치를 적는 자리가 없어 region과 style 참조가 버려집니다. 나중에 이 텍스트를 다시 자막으로 만들면 위치는 재생기의 기본값으로 돌아갑니다.
두 줄짜리 TTML 자막은 TXT에서 어떻게 되나요?
두 줄이 위아래로 적히지만 같은 자막이라는 사실은 사라집니다. TXT는 줄을 cue로 묶지 못하므로 결과를 다시 읽으면 원본의 한 자막이 두 자막이 됩니다. 번역이나 재동기화 도구가 이 파일을 읽을 예정이라면 특히 주의하세요.
TTML의 <styling>·<layout> 표는 TXT에서 어떻게 되나요?
모두 사라집니다. XML 선언, 네임스페이스, 이름 있는 스타일과 영역, <metadata>, <p>의 style·region 참조가 TXT에 자리를 갖지 못합니다. 문단 안쪽 span의 강조도 평문이 됩니다.
TTML을 TXT로 바꾸면 결과가 어떻게 생겼나요?
cue 번호도 타임코드도 없이 자막의 각 줄이 텍스트 한 줄로 나옵니다. TTML의 cue 하나가 TXT의 줄 하나가 되고, 순서와 글자는 유지됩니다.
TXT를 다시 TTML로 바꾸면 무엇을 잃나요?
시간을 잃습니다. TXT에는 시작과 끝이 없어서 TTML로 되돌리면 각 줄에 시간을 새로 배정해야 하고, 그 시간은 원본과 같을 수 없습니다. 이 방향에서 버린 시간 정보도 TXT에 기록이 없어 복원되지 않습니다.