Timed Text Markup Language
W3CによるXML形式の字幕・キャプションで、放送局や動画配信サービスが求める形式です。DFXPは最初のプロファイルの名前で、今も多くのファイルにその名前が残っています。IMSC、EBU-TT-D、AppleのiTTもTTMLであり、それぞれ独自の決まりがあります。
概要
| 拡張子 | .ttml |
|---|---|
| メディアタイプ | application/ttml+xml |
| 仕様 | W3C、Timed Text Markup Language 1(TTML1、Recommendation)。TTML2はこれを拡張しており、IMSCとEBU-TT-Dは配信用のサブセットです。 |
| 時間の精度 | 任意: 秒の小数、フレーム、またはティック |
| 文字エンコーディング | XMLの中で宣言されます。ほぼ常にUTF-8です。 |
| 装飾 | 名前付きスタイルとtts:属性: フォント、サイズ、色、背景、斜体、太字、下線、取り消し線、縁取り |
| 表示位置 | リージョン: 画面上のどこにでも配置し、サイズを決められる枠 |
| 話者 | エージェント(ttm:agent)。ヘッダーで名前を定義します。 |
| コンテナ内 | MP4ではstpp(ISO/IEC 14496-30)として格納されます。DASH、CMAF、HLSのストリームでも使われます。 |
ファイルの構造
XML文書です。スタイルとリージョンを定義するヘッダーと、字幕1つにつき1つの段落を並べたボディで構成されます。
<tt xml:lang="en" …> <head>styles, regions</head> <body><div> <p begin="00:00:23.000" end="00:00:24.500"> You're a jerk,<br/>Thom.</p> </div></body> </tt>
- 1 · ルート
<tt>要素です。TTMLの名前空間、言語、時間の基準となるクロックを指定します。基準はttp:frameRateやttp:tickRateで指定します。 - 2 · ヘッダー
名前付きスタイル、画面上のリージョン、話者を定義します。
- 3 · 時間
各段落の
beginと、endまたはdurです。 - 4 · テキスト
字幕そのものです。spanでテキストの一部にスタイルを適用し、
<br/>で改行します。
時間
TTMLは、ほかのどの字幕形式よりも多くの書き方で時間を表せます。
| 書き方 | 内容 |
|---|---|
00:00:23.500 |
時、分、秒と小数部分 |
00:00:23:12 |
秒の後のフレーム数。ファイルのttp:frameRateが12の場合は12フレーム目 |
23.5s、23500ms、1h |
時、分、秒、またはミリ秒によるオフセット |
564f |
フレーム数 |
235000000t |
ティック。1秒あたりttp:tickRate個 |
時間は、その段落を含む要素から数えます。 段落のbeginは、所属する<div>と<body>の開始時点から数えます。終了時刻を持たない段落は、その要素の終わりで終了します。
スタイル
スタイルは、tts:属性のまとまりです。テキストは、リージョンから、続いてボディ、div、段落、そして周囲のspanの順に属性を受け取ります。各要素は、名前で指定されたスタイル(style="s1 s2"、およびそれらが指定するスタイル)を受け取り、その後に自身の属性を適用します。
| 属性 | 効果 | Subtitldでの扱い |
|---|---|---|
tts:fontStyle="italic" |
斜体 | 保持 |
tts:fontWeight="bold" |
太字 | 保持 |
tts:textDecoration="underline"、"lineThrough" |
下線、取り消し線 | 保持 |
tts:color |
文字色。色名、#rrggbb、#rrggbbaa、またはrgb() |
保持(透明度は除く) |
tts:displayAlign、tts:textAlign |
リージョン内でのテキストの位置 | 9つの位置のいずれかとして保持 |
tts:fontFamily、tts:fontSize |
フォントとサイズ | 保持されない |
tts:backgroundColor、tts:textOutline |
テキストの後ろの背景ボックス、縁取り | 保持されない |
<set> |
時間とともに変化するスタイル | 保持されない |
リージョン
リージョンは、画面上の枠です。tts:originで位置を、tts:extentで大きさを指定します。枠の中では、tts:displayAlignでテキストを上、中央、下(before、center、after)に配置し、tts:textAlignで左右または中央に寄せます。
<region xml:id="top"
tts:origin="10% 10%"
tts:extent="80% 80%"
tts:displayAlign="before"/>
Subtitldは、テキストが配置される位置を計算します。リージョンの大きさがパーセント、ピクセル、セルのいずれで指定されていても対応し、SubRipの{\an1}から{\an9}に相当する9つの位置のうち最も近いものを選びます。ファイルを書き出すときは、使用している各位置がbottom、top、top-leftなどの名前のリージョンとして書かれます。
ファイルに記述がない場合。 TTMLの既定の仕様では、テキストはリージョンの左上に配置されますが、再生ソフトは下部の中央に表示します。Subtitldも同様です。また、大きさや位置が指定されていないリージョンのtextAlign="start"は、中央揃えとして読み取ります。pycaptionで書かれたファイル(古いSubtitldのものを含む)は、すべてのリージョンにこれを設定しています。
プロファイル
ほとんどのTTMLは、プロファイルに従って書かれています。プロファイルは、TTML言語のサブセットであり、独自の規則を持ちます。Subtitldは、いずれのプロファイルもTTMLとして読み取ります。
| プロファイル | 利用先 | 特徴 |
|---|---|---|
| DFXP | TTMLの最初のプロファイル。拡張子は.dfxp |
古いファイルは名前空間http://www.w3.org/2006/10/ttaf1を使います |
| IMSC 1 | DASH、CMAF、HLSでのストリーミング | オンラインの字幕・キャプション向けのW3Cプロファイル |
| EBU‑TT‑D | 欧州の放送局のオンラインプレーヤー | 要素にプレフィックスが付くことが多い: <tt:p> |
| SMPTE‑TT | 米国のテレビ局のオンラインキャプション | 放送から持ち込まれたキャプションのためのSMPTEの追加仕様 |
iTT(.itt) |
Apple iTunes StoreおよびApple TVへの納品 | フレーム単位の時間(ttp:timeBase="smpte") |
TTMLとSubtitld
- 各字幕のテキストと改行
- 斜体、太字、下線、取り消し線、色
- 画面上の表示位置
- 話者(エージェントとして)
- 開始時刻と終了時刻(ミリ秒単位、順序どおり)
- 行ごとのフォント、サイズ、背景、縁取り
- リージョンの正確な大きさと位置
- 時間とともに変化するスタイル、ルビ、画像の字幕
- 原文の横に並ぶ翻訳、吹き替え、話者の顔
Subtitld独自の内容を残すには.usfxプロジェクトとして保存してください。
TTMLファイルを開く
Subtitldは.ttml、.dfxp、.itt、.xmlを開き、次のように処理します。
- 書き方を問わずTTMLを読み取ります。名前空間が正しいもの、古いDFXPの名前空間のもの、各要素の前に
tt:が付いたものも含みます。 - あらゆる形式の時間を読み取ります。それぞれ、その時間を含むdivとbodyから数えます。
- TTMLの規則に従ってスタイルを適用し、斜体、太字、下線、取り消し線、白以外の色を保持します。
- 各字幕を、そのリージョンが表示する位置に配置します。
- エージェントを話者として扱い、吹き替え用に準備します。ファイルの
xml:langはプロジェクトの言語として使います。 - ファイルで宣言されたエンコーディングを読み取り、
などのHTMLの実体参照も処理します。
整形式のXMLではないファイルを開くと、問題の行と列を示すメッセージが表示されます。TTMLではないファイルの場合は、その旨が表示されます。
TTMLの書き出し
エクスポート、次に字幕、そしてTTMLまたはDFXPを選ぶと、次のオプションが表示されます。
- テキスト原文、翻訳、または両方(翻訳は原文の下に配置)。
- 話者名省くか、テキストの前に付けるか(Thom: …)、またはTTML独自の方法であるエージェント(
ttm:agent)として書き出します。 - 書式残すか、取り除きます。
- 時間をずらすすべての字幕を、同じ量だけ早めたり遅らせたりします。
- 見た目白の文字に黒い縁取り、またはSubtitldのプレビューどおり(そのフォント、色、半透明の背景ボックス)。
ファイルはUTF-8のTTML 1です。時間は00:00:23.000の形で書かれ、字幕を表示する各位置はリージョンとして、書式はspanとして、改行は<br/>として書かれます。xml:langには、含まれるテキストの言語を指定します。TTMLとDFXPは同じ内容のファイルで、違うのは拡張子だけです。
TTMLかWebVTTか
Webページの<track>にはWebVTTを選んでください。ブラウザが直接読み取ります。放送局、TTMLを求める動画配信サービス、dash.jsやShaka Playerなど対応したプレーヤーにはTTMLを選んでください。詳しくはWebVTTのページをご覧ください。
豆知識
TTML 1.0は、2010年11月にW3CのRecommendationになりました。それ以前は、最初のプロファイルにちなんで、Distribution Format Exchange Profile(DFXP)という名前で草案が作られていました。
古い名前空間http://www.w3.org/2006/10/ttaf1は、TTMLがTimed Text Authoring Formatと呼ばれていた2006年の草案に由来します。今もファイルに残っています。
2016年、W3CはTTMLで技術・エンジニアリング部門のエミー賞を受賞しました。HBO、Netflix、Telestream、SMPTEとともに受賞しています。
関連する形式
Subtitld で動画と一緒に開き、波形上でタイミングを調整しましょう。