SSubToolDesk
ja

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 変換ツールは、これをすべてブラウザ内で行います。アップロードもアカウント登録も不要で、ファイルがデバイスの外に出ることもありません。

SRTをVTTに変換