--- title: ': 動画埋め込み要素' slug: Web/HTML/Element/video tags: - Element - HTML - HTML Video - HTML Video Player - HTML embedded content - HTML5 - Media - Movie Playback - Movies - Multimedia - Playing Movies - Playing Video - Reference - Showing Video - Video - Web translation_of: Web/HTML/Element/video --- {{HTMLRef}} HTML の映像要素 (<video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。 <video> を音声コンテンツのために使用することもできますが、 {{HTMLElement("audio")}} 要素の方がユーザーに取って使い勝手が良いかもしれません。 {{EmbedInteractiveExample("pages/tabbed/video.html", "tabbed-standard")}} このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。 上記の例は <video> 要素のシンプルな使い方を示しています。 {{htmlelement("img")}} 要素の方法と同様に、 src 属性の中に表示したいメディアへのパスを含めます。他の属性を含めて、映像の幅や高さ、自動再生やループをするかどうか、ブラウザーの標準の映像コントロールを表示するかなどの情報を指定することができます。 開始・終了タグである <video></video> タグの間の内容は、この要素に対応していないブラウザーで代替として表示されます。 属性 この要素にはグローバル属性があります。 {{htmlattrdef("autoplay")}} 論理型の属性です。この属性が指定された場合、データの読み込みが完了し、再生可能な状態になった時点で即座にコンテンツの再生が始まります。 メモ: 自動的に音声 (あるいは音声トラックを含む映像) を再生するサイトはユーザーにとって不快な体験になる可能性がありますので、可能な限り避けるべきです。自動再生機能が必須である場合は、オプトイン (ユーザーが明示的に有効化することを求める) にするべきです。ただし、ユーザーの制御下で後からソースを設定するメディア要素を作成するときは、この方法が役に立つでしょう。正しい自動再生の使い方についての追加情報は autoplay ガイドを参照してください。 映像の自動再生を無効にするために autoplay="false" を指定しても機能しません。 <video> タグにこの属性があれば、映像が自動的に再生されます。自動再生を無効にするには、属性を完全に取り除くことが必要です。 一部のブラウザー (Chrome 70.0 など) では、 muted 属性がないと autoplay は動作しません。 {{htmlattrdef("autoPictureInPicture")}} {{experimental_inline}} 論理属性で、 true であれば、ユーザーがこの文書と他の文書やアプリケーションとの間を行き来したときに、自動的にピクチャインピクチャモードに切り替わるようにすることを示します。 {{htmlattrdef("buffered")}} メディアがどれだけの時間分バッファリングされたかを判断するために、読み取ることが可能な属性です。この属性は {{domxref("TimeRanges")}} オブジェクトを持ちます。 {{htmlattrdef("controls")}} この属性が指定された場合、再生、音量、シーク、ポーズの各機能を制御するコントロールを表示します。 {{htmlattrdef("controlslist")}} {{experimental_inline}} controlslist 属性が指定されていると、ブラウザー自身のコントロールのセットを表示する場合 (例えば controls 属性が設定されている場合)、メディア要素に表示するコントロールを選択するのを補助します。 指定できる値は nodownload, nofullscreen, noremoteplayback です。 disablePictureInPicture 属性を使用すると、ピクチャインピクチャモード (およびコントロール) を無効にすることができます。 {{htmlattrdef("crossorigin")}} この列挙型の属性は、関連画像を取得する際に CORS を使用するかを示します。CORS が有効なリソース は、汚染されることなく {{HTMLElement("canvas")}} 要素で再利用できます。次の値が使用できます: anonymous 資格情報を伴わずにオリジン間リクエストを実行します。すなわち、Cookie や X.509 証明書がない Origin: HTTP ヘッダーを送信する、あるいは HTTP ベーシック認証を行いません。サーバーが元のサイトに信用情報を付与しない場合 (Access-Control-Allow-Origin: HTTP ヘッダーの設定なし)、画像が汚染され、その使用も制限されます。 use-credentials クレデンシャルを伴ってオリジン間要求を実行します。すなわち、Cookie や X.509 証明書を伴う Origin: HTTP ヘッダーを送信する、あるいは HTTP ベーシック認証を行います。サーバーが元のサイトに信用情報を付与しない場合 (Access-Control-Allow-Credentials: HTTP ヘッダーに関わらず)、画像が汚染され、その使用も制限されます。 この属性が提供されない場合、リソースは CORS 要求なしで取得され (Origin: HTTP ヘッダーを送信せずに取得)、{{HTMLElement('canvas')}} 要素での汚染されない使用が妨げられます。これが無効な場合、列挙型のキーワードに anonymous が指定されたものとして扱われます。追加の情報は CORS 設定属性 を参照してください。 {{htmlattrdef("currentTime")}} currentTime を読み込むと、秒単位で指定されたメディアの現在の再生位置を示す倍精度の浮動小数点値を返します。メディアがまだ再生を開始していない場合は、再生を開始する時間オフセットを返します。 currentTime を設定すると、現在の再生位置を指定された時間に設定し、メディアがすでに読み込まれている場合には、その位置までメディアをシークします。 メディアがストリーミングされている場合、そのデータがメディアバッファ上で期限切れになっていると、{{Glossary("user agent", "ユーザエージェント")}}がリソースの一部を取得できない可能性があります。メディアによっては、0秒から開始しないメディアのタイムラインがある場合もあり、 currentTime をそれ以前の時間に設定すると失敗します。メディアタイムラインの参照フレームの開始点を決定するには、 {{domxref("HTMLMediaElement.getStartDate", "getStartDate()")}} メソッドを使用することができます。 {{htmlattrdef("disablePictureInPicture")}} {{experimental_inline}} ブラウザーにピクチャインピクチャのコンテキストメニューを表示させないようにしたり、場合によっては自動的にピクチャインピクチャを要求しないようにします。 {{htmlattrdef("disableRemotePlayback")}} {{experimental_inline}} 論理属性で、有線 (HDMI, DVI など) や無線 (Miracast, Chromecast, DLNA, AirPlay など) を使用して接続された端末のリモート再生機能を無効にするために使用されます。 Safari では、代替として x-webkit-airplay="deny" を使用することができます。 {{htmlattrdef("duration")}} {{ReadOnlyInline}} 倍精度浮動小数点値で、メディアのタイムライン上でのメディアの再生時間 (全長) を秒単位で示します。要素にメディアが存在しない場合、またはメディアが有効でない場合は NaN が返されます。メディアの終了時刻が不明な場合 (持続時間不明のライブストリーム、ウェブラジオ、 WebRTC からのメディア受信など)、この値は +Infinity になります。 {{htmlattrdef("height")}} 映像の表示領域の高さを、 CSS ピクセル値で指定します。 (絶対値に限ります。パーセント値は不可。) {{htmlattrdef("intrinsicsize")}} {{experimental_inline}} この属性はブラウザーに、画像の固有の寸法を無視し、この属性で指定された寸法であると見せかけるよう指示します。特に、画像がこれらの次元のラスターであって、画像の naturalWidth/naturalHeight はこの属性で指定された値が返されます。説明と例 {{htmlattrdef("loop")}} 論理型の属性です。指定された場合、ブラウザーは映像の末尾に達すると、自動的に先頭に戻ります。 {{htmlattrdef("muted")}} 論理型の属性で、映像に含まれる音声の既定の設定を示します。この属性を設定すると、初期状態が消音になります。既定値は false であり、映像再生時に音声も再生することを表します。 {{htmlattrdef("playsinline")}} 論理属性で、映像を「インライン」で再生する、すなわち要素の再生領域内で再生するかを指定します。この属性がないことが、映像を常に全画面で再生するという意味ではないことに注意してください。 {{htmlattrdef("poster")}} 映像のダウンロード中に表示される画像の URL です。この属性が指定されない場合、最初のフレームが利用可能になるまで何も表示されず、その後、最初のフレームをポスターフレームとして表示します。 {{htmlattrdef("preload")}} 列挙型の属性で、映像が再生される前に、どのコンテンツを読み込むとユーザーに最高の使い勝手をもたらすかについての作者の考えを、ブラウザーに対するヒントとしてを提供するためのものです。以下の値のうちひとつを持つことができます。 none: 映像を事前に読み込むべきではないことを示します。 metadata: 映像のメタデータ (例えば、長さ) を読み込みます。 auto: ユーザーが映像ファイルを使用しないと思われる場合でも、ファイル全体をダウンロードしてよいことを示します。 空文字列: これは auto 値と同義です。 既定値はブラウザーごとに異なります。仕様書では metadata を設定するよう助言しています。 注: autoplay 属性は preload より優先します。autoplay を指定すると、言うまでもなくブラウザーは映像を再生するためにダウンロードを始めなければなりません。 仕様書は、ブラウザーがこの属性の値に従うことを強制していません。これは単なるヒントです。 {{htmlattrdef("src")}} 埋め込む映像コンテンツへの URL を指定します。この属性は省略可能です。埋め込む映像の指定には、video 要素のブロック内で {{HTMLElement("source")}} を使用することもできます。 {{htmlattrdef("width")}} 映像の表示領域の幅を、 CSS ピクセル値で指定します。 (絶対値に限ります。パーセント値は不可)。 イベント イベント名 発生する時 {{domxref("ScriptProcessorNode.audioprocess_event","audioprocess")}}{{Deprecated_Inline}} {{DOMxRef("ScriptProcessorNode")}} の入力バッファが処理可能になった。 {{domxref("HTMLMediaElement.canplay_event", 'canplay')}} ブラウザーがメディアを再生できるようになったものの、追加のバッファリングのために停止することなくメディアの最後まで再生するには、充分なデータが読み込まれていないとみられる。 {{domxref("HTMLMediaElement.canplaythrough_event", 'canplaythrough')}} ブラウザーがコンテンツのバッファリングのために停止することなく最後までメディアを再生することができるとみられる。 {{domxref("OfflineAudioContext.complete_event", "complete")}} {{DOMxRef("OfflineAudioContext")}} のレンダリングが終了した。 {{domxref("HTMLMediaElement.durationchange_event", 'durationchange')}} duration 属性が更新された。 {{domxref("HTMLMediaElement.emptied_event", 'emptied')}} メディアが空になった。例えば、このイベントはメディアがすでに読み込まれた (または部分的に読み込まれた) 状態で、再読み込みのために load() メソッドが呼び出された場合など。 {{domxref("HTMLMediaElement.ended_event", 'ended')}} メディアの末尾に達したために再生が停止した。 {{domxref("HTMLMediaElement.loadeddata_event", 'loadeddata')}} メディアの最初のフレームが読み込み終わった。 {{domxref("HTMLMediaElement.loadedmetadata_event", 'loadedmetadata')}} メタデータを読み込んだ。 {{domxref("HTMLMediaElement.pause_event", 'pause')}} 再生が一時停止した。 {{domxref("HTMLMediaElement.play_event", 'play')}} 再生が始まった。 {{domxref("HTMLMediaElement.playing_event", 'playing ')}} データがなくなったために一時停止または遅延した後で、再生の再開の準備ができた。 {{domxref("HTMLMediaElement.progress_event", 'progress')}} ブラウザーがリソースを読み込んでいる間に定期的に発生します。 {{domxref("HTMLMediaElement.ratechange_event", 'ratechange')}} 再生レートが変更された。 {{domxref("HTMLMediaElement.seeked_event", 'seeked')}} シーク操作が完了した。 {{domxref("HTMLMediaElement.seeking_event", 'seeking')}} シーク捜査が始まった。 {{domxref("HTMLMediaElement.stalled_event", 'stalled')}} ユーザーエージェントがメディアを読み込もうとしているが、データが予期せずに入ってこない。 {{domxref("HTMLMediaElement.suspend_event", 'suspend')}} メディアデータの読み込みが停止した。 {{domxref("HTMLMediaElement.timeupdate_event", 'timeupdate')}} currentTime 属性で示されている時刻が更新された。 {{domxref("HTMLMediaElement.volumechange_event", 'volumechange')}} 音量が変更された。 {{domxref("HTMLMediaElement.waiting_event", 'waiting')}} 一時的なデータの不足により、再生が停止した。 使用上の注意 ブラウザーは同じ映像形式にすべて対応しているとは限りません。内部の {{htmlelement("source")}} 要素で複数のソースを提供することができ、ブラウザーは理解できる最初のものを使用します。 <video controls> <source src="myVideo.mp4" type="video/mp4"> <source src="myVideo.webm" type="video/webm"> <p>Your browser doesn't support HTML5 video. Here is a <a href="myVideo.mp4">link to the video</a> instead.</p> </video> メディアファイル形式や、動画で対応しているコーデックなど、実質的かつ徹底したガイドを提供しています。また、一緒に利用することができる音声コーデックのガイドもあります。 その他の利用上の注意: controls 属性を指定しないと、 video はブラウザーの標準のコントロールを含めません。 JavaScript と {{domxref("HTMLMediaElement")}} を使用して、独自のコントロールを作成することもできます。詳しくはクロスブラウザーの映像プレイヤーの作成を参照してください。 映像 (および音声) コンテンツを詳細に制御できるよう、 HTMLMediaElement はたくさんの種類のイベントを発生します。これらのイベントは、制御性を提供するだけでなく、メディアのダウンロードと再生の両方の進行状況や再生状態、再生位置を監視することができます。 {{cssxref("object-position")}} プロパティを用いて、要素の枠内での映像の位置を調整することができ、 {{cssxref("object-fit")}} プロパティを用いて映像の寸法がどのように枠内に合わせられるかを制御することができます。 映像と同時に字幕を表示するには、 JavaScript と共に {{htmlelement("track")}} 要素と WebVTT を使用します。詳しくは、 HTML5 映像への字幕の追加をご覧ください。 <video> 要素を使って音声ファイルを再生することができます。例えば WebVTT の代替表記を伴う音声を再生したい場合などに、 {{HTMLElement("audio")}} 要素は WebVTT を使った字幕を許可していないため便利です。 要素に対応しているブラウザーで代替コンテンツをテストするには、 <video> を <notavideo> のような存在しないタグに置き換えてください。 HTML の <video> の使用について一般的な良い情報源として、映像および音声コンテンツの初心者向けチュートリアルがあります。 CSS でのスタイル付け <video> 要素は置換要素です。 — {{cssxref("display")}} の値は既定で inline ですが、ビューポートの既定の幅と高さは埋め込まれる映像で定義されます。 <video> のスタイル付けについて、特別な考慮事項はありません。よくある戦略は、位置や寸法を設定しやすくして、必要に応じてスタイルやレイアウト情報を提供するために display の値を block に設定することす。動画プレイヤーのスタイル付けの基本は、便利なスタイル付けテクニックをいくつか紹介しています。 トラックの追加と削除の検出 {{event("addtrack")}} および {{event("removetrack")}} イベントを用いると、 <video> 要素でトラックが追加されたり削除されたりしたことを検出することができます。しかし、これらのイベントは <video> 要素自身に直接送信されるわけではありません。代わりに、 <video> の {{domxref("HTMLMediaElement")}} 内にある、要素に追加されたトラックの種類に対応するトラックリストオブジェクトに送信されます。 {{domxref("HTMLMediaElement.audioTracks")}} メディア要素のオーディオトラックのすべてを含む {{domxref("AudioTrackList")}} です。 addtrack のリスナーをこのオブジェクトに追加すると、新しいオーディオトラックが要素に追加された時に通知を受け取ることができます。 {{domxref("HTMLMediaElement.videoTracks")}} この {{domxref("VideoTrackList")}} オブジェクトに addtrack リスナーを追加することで、要素に動画トラックが追加されたときに通知を受け取るkとができます。 {{domxref("HTMLMediaElement.textTracks")}} この {{domxref("TextTrackList")}} オブジェクトに addtrack リスナーを追加することで、要素にテキストトラックが追加されたときに通知を受け取るkとができます。 例えば、次のようなコードで <video> 要素でオーディオトラックが追加されたり削除されたりしたときを検出することができます。 var elem = document.querySelector("video"); elem.audioTrackList.onaddtrack = function(event) { trackEditor.addTrack(event.track); }; elem.audioTrackList.onremovetrack = function(event) { trackEditor.removeTrack(event.track); }; このコードはオーディオトラックが要素で追加および削除されることを監視し、トラックエディターの論理関数を呼び出すことで、エディターにおける利用できるトラックの一覧でトラックを登録や削除を行います。 {{event("addtrack")}} および {{event("removetrack")}} イベントを監視するには、 {{domxref("EventTarget.addEventListener", "addEventListener()")}} を使用することもできます。 例 単純な映像の例 この例では、アクティブ化されたときに映像を再生し、再生を制御するためにブラウザーの既定の動画コントロールをユーザーに提供します。 <!-- Simple video example --> <!-- 'Big Buck Bunny' licensed under CC 3.0 by the Blender foundation. Hosted by archive.org --> <!-- Poster from peach.blender.org --> <video controls src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4" poster="https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217" width="620"> すみませんが、このブラウザーは埋め込み映像に対応していません。 しかし、<a href="https://archive.org/details/BigBuckBunny_124">ダウンロード</a> してお好きな映像プレイヤーで見ることはできます。 </video> {{EmbedLiveSample('Simple_video_example', '640', '370', '', 'Web/HTML/Element/video')}} 映像の再生が始まるまで、 poster 属性で指定された画像がその場所に表示されます。ブラウザーが映像の再生に対応していない場合は、代替テキストが表示されます。 複数のソースの例 この例は、メディアの3つの異なるソースを提供する最後のものをベースにしています。これにより、ブラウザーで対応している映像コーデックに関係なく、映像を見ることができます。 <!-- Using multiple sources as fallbacks for a video tag --> <!-- 'Elephants Dream' by Orange Open Movie Project Studio, licensed under CC-3.0, hosted by archive.org --> <!-- Poster hosted by Wikimedia --> <video width="620" controls poster="https://upload.wikimedia.org/wikipedia/commons/e/e8/Elephants_Dream_s5_both.jpg" > <source src="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4" type="video/mp4"> <source src="https://archive.org/download/ElephantsDream/ed_hd.ogv" type="video/ogg"> <source src="https://archive.org/download/ElephantsDream/ed_hd.avi" type="video/avi"> Your browser doesn't support HTML5 video tag. </video> {{EmbedLiveSample('Multiple_sources_example', '640', '370')}} はじめに WebM を試します。再生できない場合は、 MP4 を試します。最後に Ogg を試します。 video 要素に対応していない場合は代替メッセージを表示しますが、すべてのソースに失敗した場合は表示しません。 メディアファイル形式によっては、ファイル形式文字列の一部として codecs 引数を使用して、より具体的な情報を提供することができます。比較的簡単な例は video/webm; codecs="vp8, vorbis" であり、 WebM ビデオであり、動画に VP8、音声にに Vorbis を使用したあることを示しています。 映像へのサーバーの対応 サーバーで映像の MIME タイプが適切に設定されていないと、映像が表示されないか X 印がついた灰色のボックスが表示される (JavaScript が有効である場合) 可能性があります。 Ogg Theora 形式で映像を提供する場合、 Apache Web Server では "video/ogg" MIME タイプに映像ファイルの拡張子を追加すると問題が解決します。もっとも一般的な映像ファイルの拡張子は ".ogm", ".ogv", ".ogg" です。"/etc/apache" の "mime.types" ファイルを編集するか、 httpd.conf で "AddType" の設定ディレクティブを使用してください。 AddType video/ogg .ogm AddType video/ogg .ogv AddType video/ogg .ogg WebM 形式で映像を提供する場合、 Apache Web Server では "/etc/apache" の "mime.types" ファイルまたは httpd.conf の "AddType" ディレクティブで映像ファイルの拡張子 (一般的には ".webm") を MIME type "video/webm" に追加することで問題が解決します。 AddType video/webm .webm ウェブホスティングサービスでは、全体の更新が行われるまでの間、新技術向けに MIME タイプの設定を変更するための簡単なインターフェイスを提供しているかもしれません。 アクセシビリティの考慮事項 映像には、実際にコンテンツを説明する字幕と文字化情報 (transcript) を提供するべきです (実装方法について詳しくは HTML5 映像への字幕の追加 を参照してください) 。字幕によって、聴力を失った人が映像の再生時に音声の内容を理解する事ができるようになるのに対し、文字化情報を使用すると、音声コンテンツを理解するのに時間が掛かる人が、自分に合ったペースと書式で内容を確認できるようになります。 注目すべき点は、音声のみのメディアにキャプションを付けることはできますが、キャプションを表示するために要素の video 領域が使用されるため、 {{HTMLElement("video")}} 要素で音声を再生しないとキャプションを付けることができないということです。これは、 video 要素で音声を再生するのに便利な特別なシナリオの 1 つです。 自動字幕サービスが使用されている場合は、生成されたコンテンツが元の映像を正しく表現しているかを確認することが重要です。 字幕や文字化情報では、話されるセリフに加えて、重要な情報を伝える音楽や音響効果も識別できるようにしてください。これには感情や口調も含みます。 14 00:03:14 --> 00:03:18 [ドラマチックなロック音楽] 15 00:03:19 --> 00:03:21 [ささやき] 遠くにあるものは何ですか? 16 00:03:22 --> 00:03:24 それは……それは…… 16 00:03:25 --> 00:03:32 [ぶつかる大きな音] [皿の割れる音] 字幕は映像の主題を邪魔しないようにしてください。これは align VTT キュー設定を使用して位置を決めることができます。 MDN 字幕とクローズドキャプション — プラグイン Web Video Text Tracks Format (WebVTT) WebAIM: Captions, Transcripts, and Audio Descriptions MDN WCAG を理解する ― ガイドライン 1.2 の解説 Understanding Success Criterion 1.2.1 | W3C Understanding WCAG 2.0 Understanding Success Criterion 1.2.2 | W3C Understanding WCAG 2.0 技術的概要 コンテンツカテゴリ フローコンテンツ, 記述コンテンツ, 埋め込みコンテンツ。 {{htmlattrxref("controls", "video")}} 属性を持つ場合は、対話的コンテンツおよび知覚可能コンテンツ。 許可されている内容 要素が {{htmlattrxref("src", "video")}} 属性を持つ場合: 0 個以上の {{HTMLElement("track")}} 要素とそれに続く、メディア要素を含まない透過的コンテンツ。すなわち {{HTMLElement("audio")}} 要素や {{HTMLElement("video")}} 要素を子要素として配置してはなりません。 その他の場合: 0 個以上の {{HTMLElement("source")}} 要素、0 個以上の {{HTMLElement("track")}} 要素、メディア要素を含まない透過的コンテンツ。すなわち {{HTMLElement("audio")}} 要素や {{HTMLElement("video")}} 要素を子要素として配置してはなりません。 タグの省略 {{no_tag_omission}} 許可されている親要素 埋め込みコンテンツを受け入れるすべての要素。 暗黙の ARIA ロール 対応するロールなし 許可されている ARIA ロール {{ARIARole("application")}} DOM インターフェイス {{domxref("HTMLVideoElement")}} 仕様書 仕様書 フィードバック {{SpecName('HTML WHATWG', 'media.html#the-video-element', '<video>')}} WHATWG HTML GitHub issues ブラウザーの互換性 このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。 {{Compat("html.elements.video")}} 関連情報 ウェブ上のメディア種別と形式のガイド メディアコンテナー形式 (ファイル形式) ウェブの動画コーデックガイド ウェブの音声コーデックガイド フレーム内における画像の位置と寸法の設定: {{cssxref("object-position")}} および {{cssxref("object-fit")}} {{htmlelement("audio")}} HTML5 での映像や音声の使用 canvas を用いた映像の操作 Ogg メディアのサーバーの構成
HTML の映像要素 (<video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。 <video> を音声コンテンツのために使用することもできますが、 {{HTMLElement("audio")}} 要素の方がユーザーに取って使い勝手が良いかもしれません。
<video>
上記の例は <video> 要素のシンプルな使い方を示しています。 {{htmlelement("img")}} 要素の方法と同様に、 src 属性の中に表示したいメディアへのパスを含めます。他の属性を含めて、映像の幅や高さ、自動再生やループをするかどうか、ブラウザーの標準の映像コントロールを表示するかなどの情報を指定することができます。
src
開始・終了タグである <video></video> タグの間の内容は、この要素に対応していないブラウザーで代替として表示されます。
<video></video>
この要素にはグローバル属性があります。
映像の自動再生を無効にするために autoplay="false" を指定しても機能しません。 <video> タグにこの属性があれば、映像が自動的に再生されます。自動再生を無効にするには、属性を完全に取り除くことが必要です。
autoplay="false"
一部のブラウザー (Chrome 70.0 など) では、 muted 属性がないと autoplay は動作しません。
muted
true
controlslist
controls
指定できる値は nodownload, nofullscreen, noremoteplayback です。
nodownload
nofullscreen
noremoteplayback
disablePictureInPicture 属性を使用すると、ピクチャインピクチャモード (およびコントロール) を無効にすることができます。
disablePictureInPicture
anonymous
Origin:
Access-Control-Allow-Origin:
use-credentials
Access-Control-Allow-Credentials:
currentTime を読み込むと、秒単位で指定されたメディアの現在の再生位置を示す倍精度の浮動小数点値を返します。メディアがまだ再生を開始していない場合は、再生を開始する時間オフセットを返します。 currentTime を設定すると、現在の再生位置を指定された時間に設定し、メディアがすでに読み込まれている場合には、その位置までメディアをシークします。
currentTime
メディアがストリーミングされている場合、そのデータがメディアバッファ上で期限切れになっていると、{{Glossary("user agent", "ユーザエージェント")}}がリソースの一部を取得できない可能性があります。メディアによっては、0秒から開始しないメディアのタイムラインがある場合もあり、 currentTime をそれ以前の時間に設定すると失敗します。メディアタイムラインの参照フレームの開始点を決定するには、 {{domxref("HTMLMediaElement.getStartDate", "getStartDate()")}} メソッドを使用することができます。
Safari では、代替として x-webkit-airplay="deny" を使用することができます。
x-webkit-airplay="deny"
NaN
+Infinity
naturalWidth
naturalHeight
false
none
metadata
auto
既定値はブラウザーごとに異なります。仕様書では metadata を設定するよう助言しています。
autoplay
preload
duration
load()
ブラウザーは同じ映像形式にすべて対応しているとは限りません。内部の {{htmlelement("source")}} 要素で複数のソースを提供することができ、ブラウザーは理解できる最初のものを使用します。
<video controls> <source src="myVideo.mp4" type="video/mp4"> <source src="myVideo.webm" type="video/webm"> <p>Your browser doesn't support HTML5 video. Here is a <a href="myVideo.mp4">link to the video</a> instead.</p> </video>
メディアファイル形式や、動画で対応しているコーデックなど、実質的かつ徹底したガイドを提供しています。また、一緒に利用することができる音声コーデックのガイドもあります。
その他の利用上の注意:
HTMLMediaElement
<notavideo>
HTML の <video> の使用について一般的な良い情報源として、映像および音声コンテンツの初心者向けチュートリアルがあります。
<video> 要素は置換要素です。 — {{cssxref("display")}} の値は既定で inline ですが、ビューポートの既定の幅と高さは埋め込まれる映像で定義されます。
inline
<video> のスタイル付けについて、特別な考慮事項はありません。よくある戦略は、位置や寸法を設定しやすくして、必要に応じてスタイルやレイアウト情報を提供するために display の値を block に設定することす。動画プレイヤーのスタイル付けの基本は、便利なスタイル付けテクニックをいくつか紹介しています。
display
block
{{event("addtrack")}} および {{event("removetrack")}} イベントを用いると、 <video> 要素でトラックが追加されたり削除されたりしたことを検出することができます。しかし、これらのイベントは <video> 要素自身に直接送信されるわけではありません。代わりに、 <video> の {{domxref("HTMLMediaElement")}} 内にある、要素に追加されたトラックの種類に対応するトラックリストオブジェクトに送信されます。
addtrack
例えば、次のようなコードで <video> 要素でオーディオトラックが追加されたり削除されたりしたときを検出することができます。
var elem = document.querySelector("video"); elem.audioTrackList.onaddtrack = function(event) { trackEditor.addTrack(event.track); }; elem.audioTrackList.onremovetrack = function(event) { trackEditor.removeTrack(event.track); };
このコードはオーディオトラックが要素で追加および削除されることを監視し、トラックエディターの論理関数を呼び出すことで、エディターにおける利用できるトラックの一覧でトラックを登録や削除を行います。
{{event("addtrack")}} および {{event("removetrack")}} イベントを監視するには、 {{domxref("EventTarget.addEventListener", "addEventListener()")}} を使用することもできます。
この例では、アクティブ化されたときに映像を再生し、再生を制御するためにブラウザーの既定の動画コントロールをユーザーに提供します。
<!-- Simple video example --> <!-- 'Big Buck Bunny' licensed under CC 3.0 by the Blender foundation. Hosted by archive.org --> <!-- Poster from peach.blender.org --> <video controls src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4" poster="https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217" width="620"> すみませんが、このブラウザーは埋め込み映像に対応していません。 しかし、<a href="https://archive.org/details/BigBuckBunny_124">ダウンロード</a> してお好きな映像プレイヤーで見ることはできます。 </video>
{{EmbedLiveSample('Simple_video_example', '640', '370', '', 'Web/HTML/Element/video')}}
映像の再生が始まるまで、 poster 属性で指定された画像がその場所に表示されます。ブラウザーが映像の再生に対応していない場合は、代替テキストが表示されます。
poster
この例は、メディアの3つの異なるソースを提供する最後のものをベースにしています。これにより、ブラウザーで対応している映像コーデックに関係なく、映像を見ることができます。
<!-- Using multiple sources as fallbacks for a video tag --> <!-- 'Elephants Dream' by Orange Open Movie Project Studio, licensed under CC-3.0, hosted by archive.org --> <!-- Poster hosted by Wikimedia --> <video width="620" controls poster="https://upload.wikimedia.org/wikipedia/commons/e/e8/Elephants_Dream_s5_both.jpg" > <source src="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4" type="video/mp4"> <source src="https://archive.org/download/ElephantsDream/ed_hd.ogv" type="video/ogg"> <source src="https://archive.org/download/ElephantsDream/ed_hd.avi" type="video/avi"> Your browser doesn't support HTML5 video tag. </video>
{{EmbedLiveSample('Multiple_sources_example', '640', '370')}}
はじめに WebM を試します。再生できない場合は、 MP4 を試します。最後に Ogg を試します。 video 要素に対応していない場合は代替メッセージを表示しますが、すべてのソースに失敗した場合は表示しません。
メディアファイル形式によっては、ファイル形式文字列の一部として codecs 引数を使用して、より具体的な情報を提供することができます。比較的簡単な例は video/webm; codecs="vp8, vorbis" であり、 WebM ビデオであり、動画に VP8、音声にに Vorbis を使用したあることを示しています。
codecs
video/webm; codecs="vp8, vorbis"
サーバーで映像の MIME タイプが適切に設定されていないと、映像が表示されないか X 印がついた灰色のボックスが表示される (JavaScript が有効である場合) 可能性があります。
Ogg Theora 形式で映像を提供する場合、 Apache Web Server では "video/ogg" MIME タイプに映像ファイルの拡張子を追加すると問題が解決します。もっとも一般的な映像ファイルの拡張子は ".ogm", ".ogv", ".ogg" です。"/etc/apache" の "mime.types" ファイルを編集するか、 httpd.conf で "AddType" の設定ディレクティブを使用してください。
httpd.conf
"AddType"
AddType video/ogg .ogm AddType video/ogg .ogv AddType video/ogg .ogg
WebM 形式で映像を提供する場合、 Apache Web Server では "/etc/apache" の "mime.types" ファイルまたは httpd.conf の "AddType" ディレクティブで映像ファイルの拡張子 (一般的には ".webm") を MIME type "video/webm" に追加することで問題が解決します。
AddType video/webm .webm
ウェブホスティングサービスでは、全体の更新が行われるまでの間、新技術向けに MIME タイプの設定を変更するための簡単なインターフェイスを提供しているかもしれません。
映像には、実際にコンテンツを説明する字幕と文字化情報 (transcript) を提供するべきです (実装方法について詳しくは HTML5 映像への字幕の追加 を参照してください) 。字幕によって、聴力を失った人が映像の再生時に音声の内容を理解する事ができるようになるのに対し、文字化情報を使用すると、音声コンテンツを理解するのに時間が掛かる人が、自分に合ったペースと書式で内容を確認できるようになります。
注目すべき点は、音声のみのメディアにキャプションを付けることはできますが、キャプションを表示するために要素の video 領域が使用されるため、 {{HTMLElement("video")}} 要素で音声を再生しないとキャプションを付けることができないということです。これは、 video 要素で音声を再生するのに便利な特別なシナリオの 1 つです。
自動字幕サービスが使用されている場合は、生成されたコンテンツが元の映像を正しく表現しているかを確認することが重要です。
字幕や文字化情報では、話されるセリフに加えて、重要な情報を伝える音楽や音響効果も識別できるようにしてください。これには感情や口調も含みます。
14 00:03:14 --> 00:03:18 [ドラマチックなロック音楽] 15 00:03:19 --> 00:03:21 [ささやき] 遠くにあるものは何ですか? 16 00:03:22 --> 00:03:24 それは……それは…… 16 00:03:25 --> 00:03:32 [ぶつかる大きな音] [皿の割れる音]
字幕は映像の主題を邪魔しないようにしてください。これは align VTT キュー設定を使用して位置を決めることができます。
align
要素が {{htmlattrxref("src", "video")}} 属性を持つ場合: 0 個以上の {{HTMLElement("track")}} 要素とそれに続く、メディア要素を含まない透過的コンテンツ。すなわち {{HTMLElement("audio")}} 要素や {{HTMLElement("video")}} 要素を子要素として配置してはなりません。
その他の場合: 0 個以上の {{HTMLElement("source")}} 要素、0 個以上の {{HTMLElement("track")}} 要素、メディア要素を含まない透過的コンテンツ。すなわち {{HTMLElement("audio")}} 要素や {{HTMLElement("video")}} 要素を子要素として配置してはなりません。