Friskription → ブログ → SRTとVTT
SRTとVTT: どちらを使うか
同じ行を、同じタイミングで運び、違いは三文字ほど。それでも気にする理由は、片方だけしか受け付けない場所がいくつかあるからです。
短い答え
- SRTを選ぶのは、動画編集ソフト、デスクトップのプレーヤー、YouTubeへの字幕アップロードのとき。どこでも通る形式です。
- VTTを選ぶのは、字幕をWebページに載せるとき。HTML5の
<track>要素はWebVTTしか読まないからです。 - 迷ったらSRT。対応範囲が広く、あとからVTTに変えるのもヘッダ1行と置換だけです。
- 本当の違い: VTTは
WEBVTTの行で始まり、ミリ秒の手前がSRTのカンマに対してピリオドになります。 - VTTはSRTにないスタイルや位置指定も持てます。ただしほとんどの人には不要で、無視するプレーヤーもあります。
同じ3キューを、両方の形式で
SRT
1
00:00:01,200 --> 00:00:04,600
So today we are finally opening the
box everyone has been asking about.
2
00:00:04,600 --> 00:00:07,900
I have not looked inside. Not once,
I promise.
3
00:00:08,300 --> 00:00:11,400
Right — let us do this properly.
VTT
WEBVTT
1
00:00:01.200 --> 00:00:04.600
So today we are finally opening the
box everyone has been asking about.
2
00:00:04.600 --> 00:00:07.900
I have not looked inside. Not once,
I promise.
普通のファイルなら、違いは本当にこれだけです。ヘッダの行と、カンマがピリオドになること。どちらもプレーンなUTF-8テキストで、どちらもキューに番号を振り、どちらも開始と終了の間に-->を置き、どちらもその下の行に本文を書きます。
実際に違うところ
| SRT (SubRip) | VTT (WebVTT) | |
|---|---|---|
| ファイルヘッダ | なし | 1行目にWEBVTT、必須 |
| ミリ秒の区切り | カンマ — 00:00:01,200 |
ピリオド — 00:00:01.200 |
| キュー番号 | 必須 | 任意。数字でなく名前でもよい |
| 位置指定 | 形式に含まれない | キューごとの位置・揃え・サイズの指定 |
| スタイル | 簡単なインラインタグ。対応はまちまち | CSSに似たSTYLEブロックとキュークラス |
| コメントとメタデータ | なし | NOTEブロック、チャプターとメタデータのトラック |
HTML5の<track> |
非対応 | これが読める唯一の形式 |
| それ以外すべて | 事実上どこでも通る | 広く通るが、まれに通らない |
行き先から選ぶ
| 字幕の行き先 | 選ぶのは | 理由 |
|---|---|---|
| 動画編集ソフト — Premiere、DaVinci Resolve、Final Cut、CapCut | SRT | どの編集ソフトも聞き返さずに読み込む形式です。 |
| デスクトップのプレーヤー — VLC、IINA、mpv | SRT | 動画と同じ名前で横に置けば、勝手に読み込まれます。 |
| YouTubeへの字幕アップロード | SRT | YouTubeは両方受け付けますが、SRTがいちばん引っかかりません。 |
WebページのHTML5 <video> |
VTT | <track>要素はWebVTTしか読みません。 |
| HLSやDASHの配信 | VTT | どちらも字幕形式としてWebVTTを規定しています。 |
| ソーシャル動画 — Instagram、TikTok、LinkedIn | SRT | そもそもアップロードできる場合、まずSRTです。 |
| まだ決まっていない | SRT | 対応が広く、あとからの変換も簡単です。 |
相互に変換する
SRTからVTTは二か所だけ。先頭にWEBVTTと空行を足し、すべてのタイムスタンプのカンマをピリオドに変えます。ほかは動かす必要がありません。
# SRT → VTT
{ echo -e "WEBVTT\n"; sed 's/,/./g' subtitles.srt; } > subtitles.vtt
sedはわざと大雑把です。
ファイル中のカンマをすべて置き換えるので、セリフの中のカンマまで変わります。タイムスタンプには問題ありませんが、本文には誤りです。人に渡すものなら、タイムスタンプの行だけを変換してください。あるいは最初から必要な形式で書き出せば、手間はゼロです。
VTTからSRTは逆をやるだけ。加えて、SRTに居場所のないものを落とします。NOTEブロック、STYLEブロック、タイムスタンプ後のキュー設定、そして数字でなく名前のキューです。
どちらの形式でもファイルを手に入れる
形式論争の決着ではなく字幕そのものが必要でここに来たのなら、メディアスタジオが動画か音声のファイル — MP4、WebM、MP3、M4A、WAV — をブラウザ内で読み、話された言葉を文字起こしして翻訳し、最後にどちらの形式でも書き出します。ファイル自体はパソコンから出ません。
毎週30分が無料で、課金対象は音声のある部分だけ。どちらのダウンロードも中身の行は同じなので、最後の選択はまさにこのページの話そのものです。詳しい手順もあります。
よくある質問
SRTとVTTの違いは何ですか?
普通のファイルでは二つです。VTTはWEBVTTの行で始まり、タイムスタンプのミリ秒の手前がSRTのカンマに対してピリオドになります。さらにVTTはキューの位置指定、スタイル、コメント、メタデータに対応しますが、SRTにはその居場所がありません。
YouTubeにはどちらを使うべきですか?
SRTです。YouTubeは両方受け付けますが、アップロードの流れがいちばん素直なのはSRTで、途中のほかの道具もすべて受け取れます。
Webサイトにはどちらを使うべきですか?
VTTで、選択の余地はありません。HTML5の<track>要素はWebVTTしか読まないからです。HLSとDASHの配信もどちらもWebVTTを規定しています。
VLCはVTTファイルを再生できますか?
たいていできますが、デスクトップのプレーヤーにはSRTのほうが安全です。字幕ファイルを動画と同じ名前にして同じフォルダに置けば、自動で読み込まれます。
どちらかのほうが正確ですか?
いいえ。同じ行を同じタイミングで入れる容器にすぎません。正確さは字幕を作ったものから来るのであって、保存した形式から来るのではありません。
字幕ファイルに二言語を同時に入れられますか?
別々のトラックとしては入りませんが、ひとつのキューに両方の行を入れられます。生成前に原語を訳の下に表示するオプションを入れておくと、各キューは訳文が先、その下に括弧で原文という形で書かれます。ファイルを二つ用意しなくても、どのプレーヤーでも両方が表示されます。
ASSやSSAはどうですか?
あれは別の系統の形式で、凝ったスタイル、位置指定、組版のために作られたものです。ファンサブが使うような用途ですね。字幕そのものがデザインの仕事をしているなら価値があります。タイミング付きの翻訳テキストなら、SRTとVTTがちょうどよい大きさの道具です。