SRTとVTTの違いとは?どちらを使うべきか
SRTとVTTは最も一般的な字幕フォーマットですが、互換性はありません。両者の実際の違いと、どちらを選ぶべきかを解説します。
動画の字幕ファイルをダウンロードしたのに、なぜか使えないファイルだった、という経験があるなら、それはSRTとVTTの食い違いが原因である可能性が高いです。どちらのフォーマットも基本的には同じもの(タイムコード付きのテキスト、いわゆるキュー)を保存していますが、生まれた時代が異なり、使う場所によって挙動も変わってきます。
SRTとは
SRT(SubRip Text)はより古く、よりシンプルなフォーマットです。ブラウザ向けではなく、デスクトップ向けの動画プレーヤーのために作られました。キューは次のような形になります。
1
00:00:01,000 --> 00:00:04,000
こんにちは、番組へようこそ。
連番、カンマで区切られた開始・終了のタイムコード、そしてテキストだけです。ヘッダーもスタイルもメタデータもありません。このシンプルさこそが、SRTが今でもあらゆる場所で使われている理由です。ほぼすべてのメディアプレーヤー、編集ツール、配信プラットフォームが読み込めます。
VTTとは
VTT(WebVTT)はHTML5の<track>要素のために特別に設計されたフォーマットで、ブラウザがWeb動画の字幕として標準で想定しているのはこの形式です。VTTファイルにはWEBVTTというヘッダー行が必須で、タイムコードにはカンマではなくピリオドを使います。
WEBVTT
1
00:00:01.000 --> 00:00:04.000
こんにちは、番組へようこそ。
このヘッダーとタイムコードの書式の違いに加えて、VTTはSRTには一切なかった機能もサポートしています。キューの位置指定、基本的なスタイル(太字、斜体、クラスによる色指定)、話者を区別するためのボイスタグなどです。字幕をWebページに直接埋め込むなら、ほとんどの場合VTTが必要になります。
実際に問題になる実務上の違い
- タイムコードのカンマとピリオド。 SRTファイルを
.vttにリネームした(またはその逆)だけで「動かなくなる」最も多い原因です。タイムコードの区切り文字が異なり、ほとんどのパーサーはこれを自動的には修正しません。 WEBVTTヘッダー。 これがないVTTファイルは、他の行がすべて正しくても無効と判定されます。- プラットフォームごとの要件。 YouTube、Vimeo、そして多くの動画編集ソフトはSRTに対応しています。ブラウザのネイティブな
<track>要素や多くのJavaScript製動画プレーヤーはVTTを要求します。ストリーミング/HLSのワークフローも基本的にVTTを必要とします。 - スタイル対応。 字幕を画面上の特定の位置に表示したり、特定の話者だけをスタイリングしたりする必要がある場合、SRTではそれができません。VTT(あるいはASSのようなより高度なフォーマット)が必要です。
どちらを使うべきか
- YouTubeへの字幕アップロード、Premiere/Final Cutでの編集、ほとんどのデスクトップツールでの作業 → SRT。
<video>/<track>要素を使ってWebページに字幕を埋め込む、またはHLS/Web配信での作業 → VTT。- 高度なスタイルや位置指定が必要 → どちらでもなくASSを検討してください。
一方のフォーマットを持っていて、もう一方が必要になった場合でも、手作業で書き直す必要はありません。変換はタイムコードの書式、ヘッダー、キュー番号といった機械的な処理だけで完結します。当サイトのSRT to VTT 変換ツールは、これをすべてブラウザ内で行います。アップロードもアカウント登録も不要で、ファイルがデバイスの外に出ることもありません。