Timed Text Markup Language

開く保存XML装飾あり

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. 1 · ルート

    <tt>要素です。TTMLの名前空間、言語、時間の基準となるクロックを指定します。基準はttp:frameRateやttp:tickRateで指定します。

  2. 2 · ヘッダー

    名前付きスタイル、画面上のリージョン、話者を定義します。

  3. 3 · 時間

    各段落のbeginと、endまたはdurです。

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

.ttmlに保持される内容
  • 各字幕のテキストと改行
  • 斜体、太字、下線、取り消し線、色
  • 画面上の表示位置
  • 話者(エージェントとして)
  • 開始時刻と終了時刻(ミリ秒単位、順序どおり)
保持できない内容
  • 行ごとのフォント、サイズ、背景、縁取り
  • リージョンの正確な大きさと位置
  • 時間とともに変化するスタイル、ルビ、画像の字幕
  • 原文の横に並ぶ翻訳、吹き替え、話者の顔

Subtitld独自の内容を残すには.usfxプロジェクトとして保存してください。

TTMLファイルを開く

Subtitldは.ttml、.dfxp、.itt、.xmlを開き、次のように処理します。

  • 書き方を問わずTTMLを読み取ります。名前空間が正しいもの、古いDFXPの名前空間のもの、各要素の前にtt:が付いたものも含みます。
  • あらゆる形式の時間を読み取ります。それぞれ、その時間を含むdivとbodyから数えます。
  • TTMLの規則に従ってスタイルを適用し、斜体、太字、下線、取り消し線、白以外の色を保持します。
  • 各字幕を、そのリージョンが表示する位置に配置します。
  • エージェントを話者として扱い、吹き替え用に準備します。ファイルのxml:langはプロジェクトの言語として使います。
  • ファイルで宣言されたエンコーディングを読み取り、&nbsp;などのHTMLの実体参照も処理します。

整形式のXMLではないファイルを開くと、問題の行と列を示すメッセージが表示されます。TTMLではないファイルの場合は、その旨が表示されます。

TTMLの書き出し

Subtitldの書き出しダイアログ。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のページをご覧ください。

豆知識

2010

TTML 1.0は、2010年11月にW3CのRecommendationになりました。それ以前は、最初のプロファイルにちなんで、Distribution Format Exchange Profile(DFXP)という名前で草案が作られていました。

ttaf1

古い名前空間http://www.w3.org/2006/10/ttaf1は、TTMLがTimed Text Authoring Formatと呼ばれていた2006年の草案に由来します。今もファイルに残っています。

Emmy

2016年、W3CはTTMLで技術・エンジニアリング部門のエミー賞を受賞しました。HBO、Netflix、Telestream、SMPTEとともに受賞しています。

関連する形式

.ttml の修正が必要ですか?

Subtitld で動画と一緒に開き、波形上でタイミングを調整しましょう。

Subtitld をダウンロード