Menu

HTML Video einbinden: controls, autoplay, poster, Untertitel

Das <video>-Element spielt Videodateien mit dem eigenen Player des Browsers ab. Hier lernst du das Markup, die wichtigen Attribute (controls, autoplay, muted, loop, playsinline, poster, preload), Fallback-Formate mit <source>, Untertitel mit <track>, responsive Größen und die Steuerung per JavaScript.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

So fügst du ein Video ein

Lass das <video>-Element auf eine Videodatei zeigen und füg controls hinzu, damit der Leser es abspielen kann:

<video src="movie.mp4" controls width="640"></video>

controls zeigt den eigenen Player des Browsers: Abspielen und Pause, eine Zeitleiste, Lautstärke und Vollbild. Ohne das Attribut steht das Video einfach nur da. Diese Vorschau kann keine Videodateien laden, deshalb speisen die Beispiele auf dieser Seite das Element aus einer kleinen Canvas-Animation, die ein Skript zeichnet; die Attribute funktionieren genau wie mit einer Datei:

Weil die Quelle ein Livestream und keine Datei ist, lässt sich die Zeitleiste hier nicht ziehen, und es gibt keine feste Länge. Mit einer echten .mp4 bekommt derselbe Player eine vollständige Suchleiste.

Video-Attribute

AttributWas es macht
controlsZeigt die Steuerelemente des Browser-Players
autoplayStartet die Wiedergabe, sobald es geht (in der Praxis nur mit muted)
mutedStartet ohne Ton
loopBeginnt am Ende wieder von vorn
playsinlineSpielt auf dem iPhone in der Seite ab, statt in den Vollbildmodus zu wechseln
poster="thumb.jpg"Bild, das angezeigt wird, bevor das Video läuft
preloadnone, metadata (nur Größe und Länge) oder auto (der Browser entscheidet, wie viel er herunterlädt)
width, heightGröße in Pixeln; wenn du beides setzt, wird der Platz reserviert, bevor das Video lädt

autoplay, muted und loop

Browser blockieren Videos, die von selbst mit Ton starten. Ein stummgeschaltetes Video darf automatisch starten; so funktionieren Hintergrundvideos und kurze Clips in Schleife:

Die vier Attribute gehören zusammen: autoplay zum Starten, muted, damit der Browser es erlaubt, loop für einen Clip und playsinline, damit iPhones ihn nicht im Vollbild öffnen. Automatisch startende Videos mit Ton werden nicht nur blockiert, sie sind auch ein Problem für Screenreader-Nutzer, deren Sprachausgabe übertönt wird. Wenn ein Clip länger als fünf Sekunden läuft, gib den Leuten eine Möglichkeit, ihn anzuhalten.

Vorschaubild und preload

poster zeigt ein Bild, bevor das Video läuft, wie ein Vorschaubild. Hier hat das Video gar keine Quelle, das poster ist also alles, was es zu sehen gibt:

Mit preload="none" lädt der Browser nichts herunter, bis der Leser auf Play drückt, und das poster sorgt dafür, dass die Fläche nicht leer aussieht. Nimm preload="metadata", wenn die Dauer schon vor dem Abspielen sichtbar sein soll. Ohne poster zeigen die meisten Browser das erste Bild, sobald sie es geladen haben.

Formate und Fallbacks mit source

Statt src kannst du mit <source>-Elementen mehrere Dateien aufführen. Der Browser spielt die erste ab, die er unterstützt:

<video controls width="640" poster="thumb.jpg">
  <source src="movie.webm" type="video/webm">
  <source src="movie.mp4" type="video/mp4">
  <track kind="captions" src="captions.vtt" srclang="en" label="English">
  <p>Your browser cannot play this video. <a href="movie.mp4">Download it</a>.</p>
</video>

MP4 mit H.264-Video läuft in jedem aktuellen Browser und ist deshalb die sichere Wahl, wenn du nur eine Datei hast. Mit dem Attribut type kann der Browser Formate überspringen, die er nicht abspielen kann, ohne sie herunterzuladen. Der Text am Ende erscheint nur in Browsern, die <video> überhaupt nicht unterstützen.

Untertitel mit track

<track kind="captions"> lädt eine WebVTT-Datei, eine einfache Textdatei mit zeitgesteuerten Zeilen. Der Browser fügt seinen Steuerelementen einen Button für Untertitel hinzu und zeichnet den Text über das Video:

WEBVTT

00:00:00.000 --> 00:00:03.000
Welcome to the course.

00:00:03.000 --> 00:00:06.500
Today we build our first web page.

Untertitel helfen gehörlosen und schwerhörigen Zuschauern, Menschen, die ohne Ton schauen, und allen, die einem Video in einer Zweitsprache folgen. Füg einem Track default hinzu, damit er ohne Klick angezeigt wird. Eine Untertiteldatei von einer anderen Domain braucht CORS-Header und crossorigin am Video.

Mit JavaScript stylen und steuern

Ein Video ist wie ein Bild ein ersetztes Element: width: 100% mit height: auto macht es responsiv, und object-fit entscheidet, wie es einen Kasten mit anderer Form füllt. JavaScript bekommt play(), pause(), currentTime, volume und Events wie play, pause und ended:

play() gibt ein Promise zurück, das abgelehnt wird, wenn der Browser die Wiedergabe blockiert (zum Beispiel Autoplay mit Ton), Produktionscode sollte es also mit catch abfangen. Eigene Steuerelemente zu bauen ist optional; die eingebauten controls sind per Tastatur bedienbar und übersetzt, was eigene Buttons erst nachbauen müssen. Videos, die auf YouTube oder Vimeo liegen, bettest du stattdessen mit deren Player über ein iframe ein.

Häufige Fehler

  • Autoplay ohne muted. Der Browser blockiert es. Füg muted und playsinline hinzu.
  • controls vergessen. Solange du keine eigenen baust, hat der Leser keine Möglichkeit, das Video zu starten.
  • Kein width und height. Die Seite springt, wenn das Video lädt. Setz beides und skaliere dann mit CSS.
  • Riesige Dateien. Komprimiere Videos fürs Web und nimm preload="none" oder "metadata" für Videos weiter unten auf der Seite.
  • Keine Untertitel bei Videos mit Sprache. Füg ein <track kind="captions"> hinzu.

Häufig gestellte Fragen

Wie füge ich in HTML ein Video ein?

Mit <video src="movie.mp4" controls width="640"></video>. Das Attribut controls zeigt den Play-Button, die Zeitleiste und die Lautstärke des Browsers. Ohne es zeigt das Video sein erstes Bild (oder das poster), und der Nutzer kann es nicht starten.

Warum funktioniert autoplay bei meinem Video nicht?

Browser blockieren Autoplay mit Ton. Füg neben autoplay auch muted hinzu und playsinline, damit iPhones es in der Seite statt im Vollbild abspielen: <video autoplay muted loop playsinline>.

Welches Videoformat soll ich im Web verwenden?

MP4 mit H.264-Video läuft in jedem aktuellen Browser und ist daher der sichere Standard. Du kannst mit <source> zuerst eine kleinere WebM-Datei aufführen und den Browser das erste Format wählen lassen, das er unterstützt.

Wie füge ich einem Video ein Vorschaubild hinzu?

Mit dem Attribut poster und einer Bild-URL: <video poster="thumb.jpg" controls>. Das Bild wird angezeigt, bis das Video startet.

Wie füge ich einem HTML-Video Untertitel hinzu?

Füg in das Video ein <track kind="captions" src="captions.vtt" srclang="en" label="English"> ein. Die Datei verwendet das Format WebVTT, und der Browser zeigt in seinen Steuerelementen einen Button für Untertitel.

Wie mache ich ein Video responsiv?

Setz im CSS width: 100% und height: auto (oder max-width: 100%). Das Video skaliert mit seinem Container und behält sein Seitenverhältnis.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S