ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
track 要素とは
<track> 要素は、<video> や <audio> に字幕(subtitles)・キャプション(captions)・音声説明(descriptions)・チャプター(chapters)・メタデータ(metadata)といったテキストトラックを紐付けるための空要素です。
外部の WebVTT(.vtt)ファイルを src で参照し、再生に合わせてブラウザが字幕やチャプター情報を表示してくれます。
基本構文
<video controls width="640">
<source src="movie.mp4" type="video/mp4">
<!-- 日本語字幕(既定で表示) -->
<track kind="subtitles" src="movie.ja.vtt"
srclang="ja" label="日本語" default>
<!-- 英語字幕 -->
<track kind="subtitles" src="movie.en.vtt"
srclang="en" label="English">
<!-- 章ごとのジャンプ用 -->
<track kind="chapters" src="movie.chapters.vtt"
srclang="ja" label="章">
</video>
主な属性
| 属性 | 意味 | 例 |
|---|---|---|
src | WebVTT ファイルの URL(必須) | movie.ja.vtt |
kind | トラックの種類(既定 subtitles) | captions |
srclang | テキストの言語タグ(ja / en 等) | ja |
label | UI で表示されるトラック名 | 日本語 |
default | このトラックを既定で有効にする | — |
kind 属性の 5 種
| kind | 用途 |
|---|---|
subtitles | 外国語の翻訳字幕。音声内容を別言語で書き起こす |
captions | クローズドキャプション。音声 + 効果音や話者識別も含む。聴覚障害者向け |
descriptions | 音声説明。視覚情報をテキストで補足(視覚障害者向け、TTS 読み上げ) |
chapters | 章タイトル。プレイヤーがチャプターメニューを表示 |
metadata | スクリプトから利用するメタデータ。画面には表示されない |
WebVTT ファイルの中身
WebVTT(Web Video Text Tracks)はテキストファイルで、最初の行に WEBVTT と書き、続けて「タイムコード → 表示テキスト」を並べます。
WEBVTT
00:00:00.000 --> 00:00:03.000
こんにちは、世界。
00:00:03.500 --> 00:00:07.000 line:90%
ようこそ、WebVTT の世界へ。
00:00:08.000 --> 00:00:12.000
<v 山田>こちらは話者の名前付きの字幕です。
時刻は HH:MM:SS.mmm 形式。位置や色のスタイル指定(cue 設定)、話者識別の <v ...> タグなども書けます。
多言語切り替え
複数の <track> を並べると、ブラウザの組み込みプレイヤーに言語選択メニューが表示されます(または JS から textTracks API でプログラマブルに切り替え可能)。
const video = document.querySelector('video');
const tracks = video.textTracks;
for (const t of tracks) {
// 英語字幕だけ ON、それ以外は OFF
t.mode = (t.language === 'en') ? 'showing' : 'hidden';
}
CORS と同一オリジン制約
セキュリティ上、WebVTT ファイルはデフォルトで同一オリジンからしか読み込めません。CDN や別ドメインで配信する場合は、サーバ側で CORS ヘッダ(Access-Control-Allow-Origin)を返したうえで、<video> 側に crossorigin="anonymous" を付ける必要があります。
<video controls crossorigin="anonymous">
<source src="https://cdn.example.com/movie.mp4" type="video/mp4">
<track kind="subtitles"
src="https://cdn.example.com/movie.ja.vtt"
srclang="ja" label="日本語" default>
</video>
アクセシビリティ観点
- 聴覚障害者には captions を提供(効果音や話者識別を含む)
- 視覚障害者には descriptions を提供(場面説明)
- 外国語コンテンツには subtitles(翻訳)
- 長尺コンテンツには chapters を付けてシーク性を高める
よくあるハマりどころ
- file:// で確認すると字幕が出ない — ローカルファイルは CORS で弾かれることが多い。簡易 HTTP サーバ経由で確認する
- VTT の文字コードが Shift_JIS — WebVTT はUTF-8 必須。BOM 付きでもよいが Shift_JIS は不可
- Content-Type が text/plain — サーバ側で
text/vttを返すよう設定 - default を複数指定 — 同じ
kindでdefaultは 1 つだけ - タイムコードのミリ秒区切りがコロン —
00:00:01,000は SRT 形式。WebVTT はピリオド00:00:01.000
SRT との違い
字幕ファイルにはもう 1 つ広く使われる SRT(SubRip)形式があります。WebVTT は SRT を進化させたもので、HTML5 標準に組み込まれています。
| 項目 | WebVTT | SRT |
|---|---|---|
| 最初の行 | WEBVTT 必須 | なし |
| ミリ秒区切り | ピリオド . | カンマ , |
| HTML5 ブラウザサポート | 標準 | 非対応(変換が必要) |
| cue 設定(位置・色) | ○ | × |
| 話者識別タグ | <v ...> あり | なし |
| 拡張子 | .vtt | .srt |
既存の SRT 字幕がある場合は、先頭に WEBVTT を加えてミリ秒区切りを , → . に置換するだけで多くは WebVTT として動きます。
サーバ側の Content-Type 設定
Web サーバが .vtt ファイルに対して正しい MIME タイプを返さないと、ブラウザが字幕として認識しません。Nginx / Apache では次のように設定します。
# Nginx
types {
text/vtt vtt;
}# Apache (.htaccess)
AddType text/vtt .vtt
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- UE5のレベルブループリントでキャラクターをスポーンさせる方法 2026-06-13 13:26:37
- UE5のEvent Tickノードの使い方|毎フレーム処理とDelta Seconds 2026-06-13 13:26:37
- Reactのよくあるエラーと対処まとめ|環境構築・npm関連 2026-06-13 13:26:36
- UE5でAI Move ToがBlockedで失敗する原因と対処方法|NavMesh確認 2026-06-13 13:26:36
- UE5のビューポートの使い方|視点操作・ビューモード・投影の基本 2026-06-13 13:26:36
- UE5のWorld Compositionとは|サブレベルによる大規模ワールドと非推奨化 2026-06-13 13:26:35
- C++のコンパイルと実行方法|g++の使い方とオプション 2026-06-13 13:26:35
- .protoのgo_packageオプションとは|Goコード生成時のパッケージ指定 2026-06-13 13:26:34
- C++の開発環境構築|コンパイラとIDEの選び方・Hello World 2026-06-13 13:26:34
- gRPCクイックスタート|.proto定義からサーバ・クライアント実装まで 2026-06-13 13:26:33
- C++の関数まとめ|標準入出力(printf・cout・cin)と関数の基本 2026-06-13 13:26:33
- C#・Visual Studioのよくあるエラーと対処まとめ 2026-06-13 13:26:33
- UE5でSet Input Mode UI Onlyを解除する方法|Game Onlyに戻す 2026-06-13 13:26:32
- UE5のアウトライナーとは|アクターの一覧・整理・親子付け 2026-06-13 13:26:32
- UE5エディタの自動保存の頻度を変更する方法|Auto Save設定 2026-06-13 13:26:31
コメントを削除してもよろしいでしょうか?