The <track> element in HTML, when used in combination with <video> or <audio>, is an element that adds subtitles, captions, and other text tracks to enhance media accessibility and support for multiple languages.
<track>要素の属性kind属性) とユースケースHTML5で追加された<track>要素は、主に<video>や<audio>要素と組み合わせて使用し、字幕やキャプション、音声解説などのテキストトラックを設定する際に利用されます。ユーザーが動画や音声を視聴するときに、言語サポートやアクセシビリティを向上させるために不可欠な要素です。
テキストトラック(Text Track) は、<video>または<audio>などのメディア要素と組み合わせることで、字幕・キャプション・音声解説など、ユーザーが視覚や聴覚を補うための追加情報を提供するものです。
代表的な形式として、WebVTT(Web Video Text Tracks Format) がよく使われます。
.vtt 拡張子を持つテキストファイルで、字幕表示のタイミングや位置を指定することができます。
<track>要素の主な特徴<track>は、メディア要素に紐づくテキストトラックを読み込むためのHTML要素です。
<track>は単独の要素であり、終了タグを持たない (空要素) という特徴があります。
1つのメディアに対して、複数の <track>要素を指定することが可能です。たとえば、多言語の字幕トラックを複数用意する際にそれぞれの言語用に <track>要素を追加します。
<track>要素の属性以下の属性を設定することで、トラックの種類や言語、デフォルト設定などを細かく制御できます。
src="subtitles_en.vtt"kind="subtitles"srclang="en" (英語)label="English"defaultを付けられるのは1つのトラックのみとすることが推奨されます。default以下に、動画に英語字幕を付けた最もシンプルな例を示します。
HTML
<video controls width="640" height="360">
<source src="sample.mp4" type="video/mp4">
<track
src="subtitles_en.vtt"
kind="subtitles"
srclang="en"
label="English"
default>
</video>
<video>要素にcontrols属性を付けることで、再生・停止などのコントロールが表示されます。<source>要素で、動画ファイル (ここでは sample.mp4) を指定します。<track>要素で字幕情報 (subtitles_en.vtt) を読み込みます。kind="subtitles" と srclang="en" で英語の字幕であることを示し、label="English"でわかりやすい表記を提供します。default属性を加えると、この字幕トラックが自動的に選択されます。src属性で指定される.vttファイル (WebVTT形式) は、字幕やキャプションのテキストと、その表示タイミングを定義します。簡単な例を以下に示します。
vtt
WEBVTT
00:00:00.000 --> 00:00:04.000
Hello, welcome to our video!
00:00:04.500 --> 00:00:08.000
We will show you how to use the <track> element.
WEBVTTという宣言から始まります。hh:mm:ss.mmm (時間:分:秒.ミリ秒)形式で記述可能です。kind属性) とユースケース<track>要素にはいくつかの種類 (kind) が定義されており、それぞれ適切に使い分けることでアクセシビリティや機能性を向上させることができます。
多言語のユーザー向けに、複数の字幕やキャプションの選択肢を提供すると、アクセシビリティやユーザー満足度が向上します。
例えば、英語と日本語の字幕を用意する場合、以下のように<track>要素を2つ並べることが可能です。
HTML
<video controls>
<source src="sample.mp4" type="video/mp4">
<track src="subtitles_en.vtt" kind="subtitles" srclang="en" label="English" default>
<track src="subtitles_ja.vtt" kind="subtitles" srclang="ja" label="日本語">
</video>
kind="captions"とkind="descriptions"を適切に用いることで、聴覚または視覚障害者がコンテンツを理解できるようになります。
特にキャプションでは、話者の名前や音楽・効果音なども記載するとより良いです。
一部の古いブラウザはHTML5のテキストトラックに対応していない可能性があります。その場合、コンテンツ制作者側でテキストトラックを表示するためのJavaScriptやライブラリ (例: vtt.js等) を導入するか、あるいは外部字幕を埋め込んだ動画ファイルそのものを提供するなどのフォールバックを検討します。
<track>要素で読み込まれたテキストトラックは、JavaScriptからアクセスしたり制御したりできます。
HTMLMediaElement (例: <video>) の textTracks プロパティで、動画に関連するすべてのテキストトラックを取得できます。
各テキストトラックは TextTrack オブジェクトとして扱われ、mode (表示モード) を showing, hidden, disabled などに切り替えることが可能です。
コード例
HTML
<video id="myVideo" controls>
<source src="sample.mp4" type="video/mp4">
<track id="enTrack" src="subtitles_en.vtt" kind="subtitles" srclang="en" label="English">
<track id="jaTrack" src="subtitles_ja.vtt" kind="subtitles" srclang="ja" label="日本語">
</video>
<script>
const video = document.getElementById('myVideo');
const tracks = video.textTracks;
// テキストトラックを確認
for (let i = 0; i < tracks.length; i++) {
console.log(`Track ${i}:`, tracks[i].label, tracks[i].kind);
}
// 英語字幕だけを表示させる場合 (0番目が英語トラックだと仮定)
tracks[0].mode = 'showing';
// 日本語字幕を非表示にする場合 (1番目が日本語トラック)
tracks[1].mode = 'disabled';
</script>
こうした制御を使えば、ユーザーの言語設定に応じてスクリプトで自動的に適切な字幕をオンにするなど、よりカスタマイズされた体験を提供できます。
kind="metadata"のトラックを使うと、動画再生中に特定の時間帯でイベントを起こすことが可能です。
例えば、商品の宣伝動画において再生中に関連商品リンクを表示したり、学習動画でクイズを表示するといったインタラクティブなコンテンツを作ることができます。
WebVTTのファイル内にメタデータを記述し、JavaScriptからcuechangeイベントを利用して何らかのDOM操作を行うのが一般的です。
src属性に指定する.vttファイルのパスが正しいか、またWebVTTファイルが正しい形式と文字エンコード (通常UTF-8) で保存されているか確認しましょう。default属性<video>要素内にdefault属性を設定できるのは1つだけです。複数指定は推奨されません。<track>要素の扱いに注意が必要です。トラックファイルが正しく読み込まれているかの検証が必要になります。HTML5の<track>要素は、メディアコンテンツに字幕やキャプション、チャプターなどのテキストトラックを追加するために非常に重要な役割を果たします。アクセシビリティや多言語対応の観点からも、正しく理解し、効果的に利用することが求められます。
<video>や<audio>タグの中に<track>タグを入れる。srcで字幕ファイルを指定し、kindやsrclang、labelで情報を付加する。captions, descriptions, metadataなど、kind属性を使い分けて高度なアクセシビリティ機能やインタラクティブ機能を提供する。TextTrackオブジェクトをJavaScriptで制御し、ユーザーの環境や操作に応じた切り替えを行う。これらのポイントを抑えることで、よりユーザーに配慮した、かつ運用しやすい動画・音声コンテンツを提供できます。アクセシビリティと使い勝手、そしてコンテンツの訴求力を同時に向上させるため、ぜひ<track>要素の活用を検討してみてください。