HTML講座 / audio・video・iframeでメディアを埋め込む

音声にはaudio、動画にはvideo、別の文書の埋め込みにはiframeを使います。HTMLを書くだけではメディア本体や字幕は作成されないため、実在するファイルと適切なURLを用意し、再生・字幕・代替手段を別々に確認します。

音声と動画のファイルを準備する

次の例ではsample.mp3、sample.mp4、sample-poster.webpなどをHTMLと同じ場所に用意します。利用できる権利を持つファイルを使い、実際の名前と形式に合わせて変更してください。

<audio controls>
  <source src="sample.mp3" type="audio/mpeg">
  Your browser does not support audio playback.
</audio>
<video controls width="640" height="360" poster="sample-poster.webp">
  <source src="sample.mp4" type="video/mp4">
  <track src="sample-en.vtt" kind="captions" srclang="en"
         label="English captions" default>
  Your browser does not support video playback.
</video>

controlsは標準の再生操作、posterは再生前の画像です。字幕のsample-en.vttも別のファイルで、参照を書くだけでは作られません。次は最初の3秒分だけのWebVTTの例です。UTF-8で保存し、実際の発話や重要な音に合う時刻と内容を用意します。

WEBVTT
00:00:00.000 --> 00:00:03.000
Welcome to Small Garden.

日本語の字幕を作る場合は本文だけでなくファイル名、srclang、ラベルも合わせます。音声に重要な情報があるなら文字起こしも用意します。拡張子を変えるだけで形式の変換はできません。パスと寸法は画像ファイルの扱いと同じように確認します。

iframeで別の文書を表示する

iframeはページ内に別の文書を表示します。次のURLは構造を示す仮の例で、動作する埋め込み先ではありません。提供元の正式な埋め込みURLに置き換えます。

<iframe
  src="https://example.com/embed/example"
  title="Introduction to the example content"
  width="640" height="360"
  loading="lazy"></iframe>

titleはフレームの目的を説明します。通常のページが開けても、相手が埋め込みを禁止している場合があります。外部コンテンツはCookie、プライバシー、読み込み速度にも影響するため、必要性と提供元の条件を確認します。読み込めない場合でも内容を理解できるよう、近くに題名や説明を置きます。

画面幅へ収め、ローカルのフレームで試す

幅640の属性だけでは狭い画面に収まるとは限りません。次のCSSをheadのstyleまたはCSSファイルへ入れます。動画は本来の比率を保ち、iframeはこの実習で16:9の枠を使います。

video, iframe {
  display: block;
  width: 100%;
  max-width: 640px;
}
video { height: auto; }
iframe {
  height: auto;
  aspect-ratio: 16 / 9;
}

次の二つを同じ場所へ順にembed.htmlとframe.htmlとして保存します。外部サービスや動画ファイルなしで、フレーム内の文書と別ページへの移動を試せます。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Practice instructions</title>
</head>
<body>
  <h1>Small Garden instructions</h1>
  <p>This is a local example displayed inside an iframe.</p>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Frame practice</title>
  <style>
video, iframe {
  display: block;
  width: 100%;
  max-width: 640px;
}
video { height: auto; }
iframe {
  height: auto;
  aspect-ratio: 16 / 9;
}
  </style>
</head>
<body>
  <h1>Read the instructions</h1>
  <iframe src="embed.html" title="Small Garden instructions" width="640" height="360"></iframe>
  <p><a href="embed.html">Open the instructions as a separate page</a></p>
</body>
</html>

frame.htmlを開き、内部の見出しと文章を確認し、390ピクセル程度でも収まるか、別ページを開くリンクも使えるか試します。実際のメディアには次のような代替リンクも使えますが、ファイルと文字起こしを本当に用意してから接続します。

<p><a href="sample.mp4">Open the example video file</a></p>
<p><a href="transcript.html">Read the video transcript</a></p>

audioやvideo内のフォールバック文は、要素をサポートしない環境向けです。対応ブラウザーでファイルの読み込みが失敗した際に必ず出るエラー文ではないため、必要な代替手段はプレーヤーの外にも用意します。

再生・字幕・表示の失敗を切り分ける

ファイルの存在、パス、サーバーのメディア型、実際の符号化形式へのブラウザー対応を確認します。字幕ではVTTの拡張子、UTF-8、時刻も確認し、ローカルで失敗する場合は同一オリジンのHTTP開発サーバーで条件を比較します。

外部埋め込みは提供元の制限、横にはみ出す場合はCSSと比率を調べます。MDNのvideoとiframeを参照し、キーボードでの操作確認も再生ボタンや代替リンクに対して実施します。

같은 카테고리의 다른 글
HTML講座 / ol・ul・dlと入れ子のリスト

HTML講座 / ol・ul・dlと入れ子のリスト

順序付きリスト、箇条書き、用語と説明のリストを使い分けます。番号の開始位置や逆順表示、リスト項目の中にサブリストを置く正しい構造も学びます。

HTML講座 / labelとinputを正しく関連付ける

HTML講座 / labelとinputを正しく関連付ける

labelのforとinputのidを対応させる方法を学びます。idと送信時のnameの違い、重複IDの問題、placeholderがラベルの代わりにならない理由も説明します。

HTML講座 / セマンティック要素でページの領域を分ける

HTML講座 / セマンティック要素でページの領域を分ける

header、nav、main、article、section、aside、footerの役割を学びます。見た目の配置と意味を区別し、複数のナビゲーションを識別する方法も紹介します。

HTML講座 / formの構造とGET・POSTによる送信

HTML講座 / formの構造とGET・POSTによる送信

action、method、nameの役割とGET・POSTの違いを学びます。FormDataと開発者ツールを使い、送信対象の値、入力検証、サーバー処理を分けて確認します。

HTML講座 / detailsとsummaryで開閉できる説明を作る

HTML講座 / detailsとsummaryで開閉できる説明を作る

JavaScriptなしで開閉する補足説明を作ります。open属性の真偽、分かりやすいsummaryの書き方、Tab・Enter・Spaceによる操作の確認方法も紹介します。

HTML講座 / placeholderと入力中も残る案内文を付ける

HTML講座 / placeholderと入力中も残る案内文を付ける

label、placeholder、valueの違いを学びます。inputとtextareaの例、aria-describedbyによる説明の関連付け、フォームデータで送られる値の確認方法も紹介します。

HTML講座 / figureとfigcaptionで図と説明をまとめる

HTML講座 / figureとfigcaptionで図と説明をまとめる

図とキャプションを一つのまとまりとして表す方法を学びます。altとキャプションの役割、出典の示し方、figureを使わなくてもよい場面も説明します。

HTML講座 / HTML文書の基本構造

HTML講座 / HTML文書の基本構造

doctype、html、head、bodyの役割と、文字コード・文書タイトル・viewportの設定を解説します。ファイルの保存から表示確認、表示されない場合の調べ方まで学べます。

HTML講座 / テキストの意味を表すem・strong・引用・コード

HTML講座 / テキストの意味を表すem・strong・引用・コード

emとstrong、qとblockquote、abbr、code、kbdの違いを学びます。太字や斜体という見た目ではなく、文章中の役割に合わせて要素を選ぶ方法を説明します。

HTML講座 / textarea・select・option・buttonを使う

HTML講座 / textarea・select・option・buttonを使う

複数行入力、選択メニュー、送信・リセット・通常ボタンを使い分けます。表示ラベルと送信値、初期値と現在値を実際のフォームで比較する方法も紹介します。