<video>: Das Video-Einbettungselement
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Das <video>
-HTML-Element bettet einen Mediaplayer ein, der Videowiedergabe in das Dokument unterstützt. Sie können <video>
auch für Audiomaterial verwenden, aber das <audio>
-Element könnte eine passendere Benutzererfahrung bieten.
Probieren Sie es aus
Das obige Beispiel zeigt die einfache Verwendung des <video>
-Elements. Ähnlich wie beim <img>
-Element fügen wir einen Pfad zu dem Medium hinzu, das wir im src
-Attribut anzeigen möchten. Wir können weitere Attribute einfügen, um Informationen wie die Videobreite und -höhe anzugeben, ob es automatisch abgespielt und wiederholt werden soll oder um die standardmäßigen Videosteuerungen des Browsers anzuzeigen usw.
Der Inhalt zwischen den öffnenden und schließenden <video></video>
-Tags wird als Fallback in Browsern angezeigt, die das Element nicht unterstützen.
Attribute
Wie alle anderen HTML-Elemente unterstützt auch dieses Element die globalen Attribute.
autoplay
-
Ein boolesches Attribut; wenn angegeben, beginnt das Video automatisch mit der Wiedergabe, sobald es ohne Unterbrechung zum vollständigen Laden der Daten abgespielt werden kann.
Hinweis: Moderne Browser blockieren Audio (oder Videos mit einer nicht stummgeschalteten Tonspur) vom Autoplay, da Websites, die automatisch Audio abspielen, eine unangenehme Erfahrung für Nutzer sein können. Siehe unseren Autoplay-Leitfaden für zusätzliche Informationen darüber, wie Sie Autoplay korrekt verwenden.
Um das Autoplay von Videos auszuschalten, funktioniert
autoplay="false"
nicht; das Video wird abgespielt, wenn das Attribut überhaupt im<video>
-Tag vorhanden ist. Um das Autoplay zu entfernen, muss das Attribut vollständig entfernt werden. controls
-
Wenn dieses Attribut vorhanden ist, bietet der Browser Steuerungen an, um dem Benutzer die Kontrolle über die Videowiedergabe zu ermöglichen, einschließlich Lautstärkeeinstellung, Suchlauf und Pausieren/Fortsetzen der Wiedergabe.
controlslist
-
Das
controlslist
Attribut hilft dem Browser, auszuwählen, welche Steuerungen für dasvideo
-Element angezeigt werden sollen, wenn der Browser sein eigenes Steuerungsset zeigt (das heißt, wenn dascontrols
-Attribut angegeben ist).Erlaubte Werte sind
nodownload
,nofullscreen
undnoremoteplayback
.Verwenden Sie das
disablepictureinpicture
Attribut, wenn Sie den Bild-im-Bild-Modus (und die Steuerung) deaktivieren möchten. crossorigin
-
Dieses enumerierte Attribut gibt an, ob CORS verwendet werden soll, um das zugehörige Video abzurufen. CORS-fähige Ressourcen können im
<canvas>
-Element wiederverwendet werden, ohne verunreinigt zu werden. Erlaubte Werte sind:anonymous
-
Sendet eine Cross-Origin-Anfrage ohne Berechtigung. Mit anderen Worten, es sendet den
Origin:
HTTP-Header ohne ein Cookie, X.509-Zertifikat oder Durchführung der HTTP-Basisauthentifizierung. Wenn der Server der Originalsite keine Berechtigungen gewährt (indem er den HTTP-HeaderAccess-Control-Allow-Origin:
nicht setzt), wird die Ressource verunreinigt und ihre Nutzung eingeschränkt. use-credentials
-
Sendet eine Cross-Origin-Anfrage mit Berechtigung. Mit anderen Worten, es sendet den
Origin:
HTTP-Header mit einem Cookie, einem Zertifikat oder Durchführung der HTTP-Basisauthentifizierung. Wenn der Server der Originalsite keine Berechtigungen gewährt (durch den HTTP-HeaderAccess-Control-Allow-Credentials:
), wird die Ressource verunreinigt und ihre Nutzung eingeschränkt.
Wenn nicht vorhanden, wird die Ressource ohne eine CORS-Anfrage abgerufen (d. h. ohne Senden des
Origin:
HTTP-Headers), was ihre nicht verunreinigte Nutzung in<canvas>
-Elementen verhindert. Wenn ungültig, wird es so behandelt, als wäre das enumerierte Schlüsselwortanonymous
verwendet. Siehe CORS-Einstellungsattribute für zusätzliche Informationen. disablepictureinpicture
-
Verhindert, dass der Browser ein Bild-im-Bild-Kontextmenü vorschlägt oder in einigen Fällen automatisch den Bild-im-Bild-Modus anfordert.
disableremoteplayback
-
Ein boolesches Attribut, das verwendet wird, um die Fähigkeit zur Fernwiedergabe auf Geräten zu deaktivieren, die mit vernetzten (HDMI, DVI, etc.) und kabellosen Technologien (Miracast, Chromecast, DLNA, AirPlay, etc.) verbunden sind.
In Safari können Sie
x-webkit-airplay="deny"
als Fallback verwenden. height
-
Die Höhe des Videoanzeigebereichs in CSS-Pixeln (nur absolute Werte; keine Prozentwerte).
loop
-
Ein boolesches Attribut; wenn angegeben, wird der Browser automatisch zum Start zurückspringen, wenn das Ende des Videos erreicht wird.
muted
-
Ein boolesches Attribut, das die standardmäßige Audio-Stummschaltungseinstellung im Video angibt. Wenn gesetzt, bleibt der Ton zunächst stumm. Der Standardwert ist
false
, d.h. der Ton wird abgespielt, wenn das Video abgespielt wird. playsinline
-
Ein boolesches Attribut, das angibt, dass das Video "inline" abgespielt werden soll, das heißt, innerhalb des Wiedergabebereichs des Elements. Beachten Sie, dass das Fehlen dieses Attributs nicht bedeutet, dass das Video immer im Vollbild abgespielt wird.
poster
-
Eine URL für ein Bild, das angezeigt wird, während das Video heruntergeladen wird. Wenn dieses Attribut nicht angegeben ist, wird nichts angezeigt, bis der erste Frame verfügbar ist. Dann wird der erste Frame als Poster-Frame angezeigt.
preload
-
Dieses enumerierte Attribut ist dazu gedacht, dem Browser einen Hinweis darauf zu geben, was der Autor für die beste Benutzererfahrung in Bezug auf den Inhalt hält, der geladen wird, bevor das Video abgespielt wird. Es kann einen der folgenden Werte haben:
none
: Gibt an, dass das Video nicht vorab geladen werden soll.metadata
: Gibt an, dass nur Metadaten des Videos (z. B. Länge) abgerufen werden.auto
: Gibt an, dass die gesamte Videodatei heruntergeladen werden kann, auch wenn der Benutzer nicht erwartet, sie zu verwenden.- leerer String: Ein Synonym für den Wert
auto
.
Der Standardwert ist für jeden Browser unterschiedlich. Die Spezifikation empfiehlt, ihn auf
metadata
zu setzen.Hinweis:
- Das
autoplay
-Attribut hat Vorrang vorpreload
. Wennautoplay
angegeben ist, müsste der Browser das Video offensichtlich zum Abspielen herunterladen. - Die Spezifikation zwingt den Browser nicht, den Wert dieses Attributs zu befolgen; es ist ein reiner Hinweis.
src
-
Die URL des einzubettenden Videos. Dies ist optional; Sie können stattdessen das
<source>
-Element innerhalb des Videoblocks verwenden, um das einzubettende Video anzugeben. width
-
Die Breite des Videoanzeigebereichs in CSS-Pixeln (nur absolute Werte; keine Prozentwerte).
Ereignisse
Ereignisname | Ausgelöst, wenn |
---|---|
[`audioprocess`](/de/docs/Web/API/ScriptProcessorNode/audioprocess_event) Veraltet | Der Eingabepuffer eines [`ScriptProcessorNode`](/de/docs/Web/API/ScriptProcessorNode) ist bereit zur Verarbeitung. |
[`canplay`](/de/docs/Web/API/HTMLMediaElement/canplay_event) | Der Browser kann das Medium abspielen, schätzt aber, dass nicht genug Daten geladen wurden, um das Medium bis zum Ende abzuspielen, ohne für weiteres Puffern des Inhalts anhalten zu müssen. |
[`canplaythrough`](/de/docs/Web/API/HTMLMediaElement/canplaythrough_event) | Der Browser schätzt, dass er das Medium bis zum Ende abspielen kann, ohne für das Puffern von Inhalten anzuhalten. |
[`complete`](/de/docs/Web/API/OfflineAudioContext/complete_event) | Die Wiedergabe eines [`OfflineAudioContext`](/de/docs/Web/API/OfflineAudioContext) wird beendet. |
[`durationchange`](/de/docs/Web/API/HTMLMediaElement/durationchange_event) | Das duration -Attribut wurde aktualisiert. |
[`emptied`](/de/docs/Web/API/HTMLMediaElement/emptied_event) | Das Medium ist leer geworden; zum Beispiel wird dieses Ereignis gesendet, wenn das Medium bereits geladen (oder teilweise geladen) ist und die load() -Methode aufgerufen wird, um es erneut zu laden. |
[`ended`](/de/docs/Web/API/HTMLMediaElement/ended_event) | Die Wiedergabe wurde gestoppt, weil das Ende des Mediums erreicht wurde. |
[`error`](/de/docs/Web/API/HTMLMediaElement/error_event) | Ein Fehler ist aufgetreten, während die Mediendaten abgerufen wurden oder der Ressourcentyp kein unterstütztes Medienformat ist. |
[`loadeddata`](/de/docs/Web/API/HTMLMediaElement/loadeddata_event) | Der erste Frame des Mediums wurde geladen. |
[`loadedmetadata`](/de/docs/Web/API/HTMLMediaElement/loadedmetadata_event) | Die Metadaten wurden geladen. |
[`loadstart`](/de/docs/Web/API/HTMLMediaElement/loadstart_event) | Ausgelöst, wenn der Browser begonnen hat, die Ressource zu laden. |
[`pause`](/de/docs/Web/API/HTMLMediaElement/pause_event) | Die Wiedergabe wurde pausiert. |
[`play`](/de/docs/Web/API/HTMLMediaElement/play_event) | Die Wiedergabe hat begonnen. |
[`playing`](/de/docs/Web/API/HTMLMediaElement/playing_event) | Die Wiedergabe ist bereit, zu starten, nachdem sie pausiert oder verzögert wurde, aufgrund fehlender Daten. |
[`progress`](/de/docs/Web/API/HTMLMediaElement/progress_event) | Wird regelmäßig ausgelöst, während der Browser eine Ressource lädt. |
[`ratechange`](/de/docs/Web/API/HTMLMediaElement/ratechange_event) | Die Wiedergabegeschwindigkeit hat sich geändert. |
[`seeked`](/de/docs/Web/API/HTMLMediaElement/seeked_event) | Ein Seek-Vorgang wurde abgeschlossen. |
[`seeking`](/de/docs/Web/API/HTMLMediaElement/seeking_event) | Ein Seek-Vorgang hat begonnen. |
[`stalled`](/de/docs/Web/API/HTMLMediaElement/stalled_event) | Der Benutzeragent versucht, Mediendaten abzurufen, aber die Daten kommen unerwartet nicht. |
[`suspend`](/de/docs/Web/API/HTMLMediaElement/suspend_event) | Das Laden von Mediendaten wurde ausgesetzt. |
[`timeupdate`](/de/docs/Web/API/HTMLMediaElement/timeupdate_event) | Die Zeit, die durch das currentTime -Attribut angezeigt wird, wurde aktualisiert. |
[`volumechange`](/de/docs/Web/API/HTMLMediaElement/volumechange_event) | Die Lautstärke hat sich geändert. |
[`waiting`](/de/docs/Web/API/HTMLMediaElement/waiting_event) | Die Wiedergabe wurde gestoppt, weil vorübergehend Daten fehlen. |
Hinweise zur Verwendung
Nicht alle Browser unterstützen die gleichen Videoformate; Sie können mehrere Quellen innerhalb verschachtelter <source>
-Elemente angeben, und der Browser wird dann die erste verwenden, die er versteht.
<video controls>
<source src="myVideo.webm" type="video/webm" />
<source src="myVideo.mp4" type="video/mp4" />
<p>
Your browser doesn't support HTML video. Here is a
<a href="myVideo.mp4" download="myVideo.mp4">link to the video</a> instead.
</p>
</video>
Wir bieten einen substanziellen und umfassenden Leitfaden zu Medien-Dateitypen und den Leitfaden zu den für Video unterstützten Codecs. Ebenfalls verfügbar ist ein Leitfaden zu Audiocodecs, die mit ihnen verwendet werden können.
Weitere Nutzungshinweise:
- Wenn Sie das
controls
-Attribut nicht angeben, enthält das Video nicht die Standardeinstellungen des Browsers. Sie können eigene Steuerungen mit JavaScript und derHTMLMediaElement
-API erstellen. Siehe Erstellung eines plattformübergreifenden Video-Players für weitere Details. - Um eine präzise Kontrolle über Ihre Videos (und Audioinhalte) zu ermöglichen, lösen
HTMLMediaElement
s viele verschiedene Ereignisse aus. Neben der Bereitstellung von Kontrollierbarkeit ermöglichen diese Ereignisse die Überwachung des Fortschritts von sowohl dem Herunterladen als auch der Wiedergabe des Mediums, sowie des Wiedergabestatus und der Position. - Sie können die
object-position
-Eigenschaft verwenden, um die Positionierung des Videos innerhalb des Rahmens des Elements anzupassen, und dieobject-fit
-Eigenschaft, um zu steuern, wie die Größe des Videos angepasst wird, um in den Rahmen zu passen. - Um Untertitel zu Ihrem Video anzuzeigen, können Sie einige JavaScript zusammen mit dem
<track>
-Element und dem WebVTT-Format verwenden. Siehe Hinzufügen von Untertiteln zu HTML-Videos für weitere Informationen. - Sie können Audiodateien mit einem
<video>
-Element abspielen. Dies kann nützlich sein, wenn Sie beispielsweise Audio mit einem WebVTT-Transkript wiedergeben müssen, da das<audio>
-Element keine Untertitel mit WebVTT zulässt. - Um den Fallback-Inhalt in Browsern zu testen, die das Element unterstützen, können Sie
<video>
durch ein nicht existentes Element wie<notavideo>
ersetzen.
Eine gute allgemeine Informationsquelle zur Verwendung von HTML <video>
ist das Video- und Audiomaterial Einsteiger-Tutorial.
Styling mit CSS
Das <video>
-Element ist ein ersetztes Element — sein display
-Wert ist standardmäßig inline
— aber seine Standardbreite und -höhe im Ansichtsfenster wird durch das eingebettete Video definiert.
Es gibt keine besonderen Überlegungen zum Styling von <video>
; eine gängige Strategie ist es, ihm einen display
-Wert von block
zu geben, um es einfacher zu positionieren, zu skalieren usw., und dann Styling- und Layoutinformationen wie gewünscht bereitzustellen. Grundlagen des Video-Player-Stylings bietet einige nützliche Styling-Techniken.
Hinzufügen von Untertiteln und anderen zeitgesteuerten Textspuren
Zeitgesteuerte Textspuren für Untertitel, geschlossene Untertitel, Kapitelüberschriften usw. können deklarativ hinzugefügt werden, indem das <track>
-Element verschachtelt wird. Die Spuren werden im Web Video Text Tracks File Format (WebVTT) (.vtt
-Dateien) spezifiziert.
Zum Beispiel enthält der folgende HTML-Code die Datei "captions.vtt", die verwendet wird, um geschlossene Untertitel auf dem Video einzublenden, wenn Untertitel vom Benutzer aktiviert werden.
<video controls src="video.webm">
<track default kind="captions" src="captions.vtt" />
</video>
Zeitgesteuerte Textspuren können auch programmatisch mit der WebVTT-API hinzugefügt werden.
Erkennen von Spur hinzufügung und -entfernung
Sie können erkennen, wenn Spuren zu einem <video>
-Element hinzugefügt oder entfernt werden, indem Sie die addtrack
- und removetrack
-Ereignisse verwenden. Diese Ereignisse werden jedoch nicht direkt an das <video>
-Element selbst gesendet. Stattdessen werden sie an das Track-List-Objekt innerhalb des <video>
-Elements gesendet, das dem Typ der hinzugefügten Spur entspricht:
HTMLMediaElement.audioTracks
-
Eine
AudioTrackList
, die alle Audio-Tracks des Medienelements enthält. Fügen Sie diesem Objekt einen Listener füraddtrack
hinzu, um benachrichtigt zu werden, wenn neue Audiotracks zum Element hinzugefügt werden. HTMLMediaElement.videoTracks
-
Eine
VideoTrackList
, die alle Video-Tracks des Medienelements enthält. Fügen Sie diesem Objekt einenaddtrack
-Listener hinzu, um benachrichtigt zu werden, wenn Video-Tracks zum Element hinzugefügt werden. HTMLMediaElement.textTracks
-
Eine
TextTrackList
, die alle Textspuren des Medienelements enthält (die für Untertitel, geschlossene Untertitel usw. verwendet werden). Fügen Sie diesem Objekt einenaddtrack
-Listener hinzu, um benachrichtigt zu werden, wenn Textspuren zum Element hinzugefügt werden.
Zum Beispiel können Sie Code wie diesen verwenden, um zu erkennen, wann Audiospuren zu oder von einem <video>
-Element hinzugefügt oder entfernt werden:
const elem = document.querySelector("video");
elem.audioTracks.onaddtrack = (event) => {
trackEditor.addTrack(event.track);
};
elem.audioTracks.onremovetrack = (event) => {
trackEditor.removeTrack(event.track);
};
Dieser Code überwacht das Hinzufügen und Entfernen von Audiotracks zum Element und ruft eine hypothetische Funktion in einem Track-Editor auf, um den Track in der Liste der verfügbaren Tracks des Editors zu registrieren und zu entfernen.
Sie können auch addEventListener()
verwenden, um die addtrack
- und removetrack
-Ereignisse zu überwachen.
Serverunterstützung für Video
Wenn der MIME-Typ des Videos auf dem Server nicht korrekt eingestellt ist, wird das Video möglicherweise nicht angezeigt oder es wird ein graues Feld mit einem X angezeigt (wenn JavaScript aktiviert ist).
Wenn Sie den Apache-Webserver verwenden, um WebM-Videos bereitzustellen, können Sie dieses Problem beheben, indem Sie die Dateitypen-Erweiterungen der Videodatei dem MIME-Typ video/webm
hinzufügen (die häufigste WebM-Dateierweiterung ist .webm
). Um dies zu tun, bearbeiten Sie die Datei mime.types
in /etc/apache
oder verwenden Sie die AddType
-Konfigurationsdirektive in httpd.conf
:
AddType video/webm .webm
Ihr Webhost kann eine einfache Benutzeroberfläche zur Konfiguration von MIME-Typ-Änderungen für neue Technologien bereitstellen, bis ein globales Update von selbst erfolgt.
Barrierefreiheit
Videos sollten sowohl Untertitel als auch Transkripte bereitstellen, die ihren Inhalt genau beschreiben (siehe Hinzufügen von Untertiteln zu HTML-Videos für weitere Informationen zur Implementierung). Untertitel ermöglichen es Menschen, die von Hörverlust betroffen sind, den Audioinhalt eines Videos zu verstehen, während das Video abgespielt wird. Transkripte erlauben es Personen, die zusätzliche Zeit benötigen, audioinhalte in einem Tempo und Format zu überprüfen, das für sie angenehm ist.
Es ist erwähnenswert, dass während Sie Audio-Only-Medien untertiteln können, dies nur möglich ist, wenn die Audiodateien in einem <video>
-Element abgespielt werden, da der Videobereich des Elements verwendet wird, um die Untertitel anzuzeigen. Dies ist eines der besonderen Szenarien, in denen es nützlich ist, Audio in einem Videoelement abzuspielen.
Falls automatische Untertitelungsdienste verwendet werden, ist es wichtig, die erstellten Inhalte zu überprüfen, um sicherzustellen, dass sie den ursprünglichen Videoinhalt genau repräsentieren.
Zusätzlich zum gesprochenen Dialog sollten Untertitel und Transkripte auch Musik und Soundeffekte identifizieren, die wichtige Informationen kommunizieren. Dies umfasst Emotionen und Tonalität:
14 00:03:14 --> 00:03:18 [Dramatic rock music] 15 00:03:19 --> 00:03:21 [whispering] What's that off in the distance? 16 00:03:22 --> 00:03:24 It's… it's a… 16 00:03:25 --> 00:03:32 [Loud thumping] [Dishes clattering]
Untertitel sollten das Hauptmotiv des Videos nicht verdecken. Sie können mit der align
VTT-Cue-Einstellung positioniert werden.
Beispiele
Einzelne Quelle
Dieses Beispiel spielt ein Video ab, wenn es aktiviert wird, und bietet dem Benutzer die standardmäßigen Videosteuerungen des Browsers, um die Wiedergabe zu steuern.
HTML
<!-- Basic 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">
Sorry, your browser doesn't support embedded videos, but don't worry, you can
<a href="https://archive.org/details/BigBuckBunny_124">download it</a>
and watch it with your favorite video player!
</video>
Ergebnis
Bis das Video beginnt, wird das im poster
-Attribut angegebene Bild an seiner Stelle angezeigt. Wenn der Browser die Videowiedergabe nicht unterstützt, wird der Fallback-Text angezeigt.
Mehrere Quellen
Dieses Beispiel baut auf dem vorherigen auf und bietet drei verschiedene Quellen für das Medium; dies ermöglicht es, das Video unabhängig davon anzusehen, welche Videocodecs vom Browser unterstützt werden.
HTML
<!-- 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_hd.avi"
type="video/avi" />
<source
src="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4"
type="video/mp4" />
Sorry, your browser doesn't support embedded videos, but don't worry, you can
<a
href="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4"
download="ed_1024_512kb.mp4">
download the MP4
</a>
and watch it with your favorite video player!
</video>
Ergebnis
Zuerst wird AVI versucht. Wenn das nicht abgespielt werden kann, wird MP4 versucht. Eine Fallback-Nachricht wird angezeigt, wenn das Videoelement nicht unterstützt wird, aber nicht, wenn alle Quellen fehlschlagen.
Einige Medien-Dateitypen ermöglichen es Ihnen, spezifischere Informationen mit dem codecs
-Parameter als Teil des Dateityps anzugeben. Ein relativ einfaches Beispiel ist video/webm; codecs="vp8, vorbis"
, welches angibt, dass es sich um ein WebM-Video handelt, das VP8 für Video und Vorbis für Audio verwendet.
Technische Zusammenfassung
Inhaltskategorien | Flussinhalt, phrasierter Inhalt, eingebetteter Inhalt. Wenn es ein controls -Attribut hat: interaktiver Inhalt und fassbarer Inhalt. |
---|---|
Erlaubter Inhalt |
Wenn das Element ein Andernfalls: null oder mehr |
Tag-Auslassung | Keine, sowohl das Start- als auch End-Tag sind erforderlich. |
Erlaubte Eltern | Jedes Element, das eingebetteten Inhalt akzeptiert. |
Implizite ARIA-Rolle | Keine entsprechende Rolle |
Zulässige ARIA-Rollen | application |
DOM-Schnittstelle | [`HTMLVideoElement`](/de/docs/Web/API/HTMLVideoElement) |
Spezifikationen
Specification |
---|
HTML Standard # the-video-element |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
-
Positionieren und Größenanpassung des Bildes im Rahmen:
object-position
undobject-fit
<audio>