Leistung von Videos

Im vorherigen Modul haben Sie einige Methoden zur Leistungsoptimierung kennengelernt Bilder, ein weit verbreiteter Ressourcentyp im Web, der eine ausreichende Bandbreite erhalten, wenn nicht auf ihre Optimierung und Darstellungsbereich berücksichtigt.

Bilder sind jedoch nicht der einzige Medientyp, der häufig im Web zu finden ist. Videos sind ein weiterer beliebter Medientyp, der oft auf Webseiten verwendet wird. Bevor wir uns einige der Optimierungsmöglichkeiten erläutert, ist es wichtig zu verstehen, wie die <video> funktioniert.

Videoquelldateien

Wenn Sie mit Mediendateien arbeiten, wird die Datei, die Sie auf Ihrem Betriebssystem kennen, (.mp4, .webm und weitere) wird als Container bezeichnet. Ein Container enthält einen oder mehr Streams. In den meisten Fällen ist dies der Video- und Audiostream.

Du kannst jeden Stream mit einem Codec komprimieren. Ein video.webm könnte beispielsweise einen WebM-Container mit einem mit VP9 komprimierten Videostream und einem Audio der mit Vorbis komprimiert wurde.

Es ist hilfreich, den Unterschied zwischen Containern und Codecs zu verstehen, können Sie Ihre Mediendateien mit deutlich geringerer Bandbreite komprimieren, Das führt zu einer kürzeren Seitenladezeit und einer besseren den Largest Contentful Paint (LCP) der Seite, ein nutzerorientierter Messwert und einen der drei Core Web Vitals-Werte.

Eine Möglichkeit, Videodateien zu komprimieren, bietet FFmpeg:

ffmpeg -i input.mov output.webm

Der obige Befehl ist zwar so einfach wie bei Verwendung von FFmpeg, verwendet jedoch input.mov-Datei und gibt eine output.webm-Datei mit dem Standard-FFmpeg-Format aus Optionen. Der vorherige Befehl gibt eine kleinere Videodatei aus, die in allen moderne Browser. Das Optimieren der Video- oder Audiooptionen, die FFmpeg bietet könnte können Sie die Dateigröße noch weiter reduzieren. Wenn Sie zum Beispiel Wenn du ein <video>-Element verwendest, um ein GIF zu ersetzen, solltest du den Audiotrack entfernen:

ffmpeg -i input.mov -an output.webm
<ph type="x-smartling-placeholder">

Für weitere Details bietet FFmpeg das Flag -crf an, wenn Komprimieren von Videos ohne Codierung mit variabler Bitrate -crf steht für Konstanter Ratenfaktor. Mit dieser Einstellung wird der Grad der Dabei wird eine Ganzzahl innerhalb eines bestimmten Bereichs akzeptiert.

Codecs wie H.264 und VP9 unterstützen das Flag -crf, aber seine Verwendung hängt von welchen Codec du verwendest. Weitere Informationen finden Sie unter Konstanter Ratenfaktor für Codierung von Videos in H.264 sowie eine konstante Qualität bei der Codierung von Videos in VP9

Mehrere Formate

Bei Videodateien ist die Angabe mehrerer Formate als Fallback möglich. für Browser, die nicht alle modernen Formate unterstützen.

<video>
  <source src="video.webm" type="video/webm">
  <source src="video.mp4" type="video/mp4">
</video>

Da alle modernen Browser den H.264-Codec unterstützen, kann MP4 auch als Fallback für ältere Browser. Für die WebM-Version kann der neuere AV1-Codec verwendet werden. der noch nicht so weit verbreitet ist, oder der frühere VP9-Codec, der besser unterstützt als AV1, wird aber normalerweise nicht so komprimiert wie AV1.

<ph type="x-smartling-placeholder">

Das Attribut poster

Das Posterbild eines Videos wird mit dem Attribut poster auf der <video> hinzugefügt. -Element, das Nutzern vor der Wiedergabe Hinweise auf den Inhalt des Videos gibt eingeleitet:

<video poster="poster.jpg">
  <source src="video.webm" type="video/webm">
  <source src="video.mp4" type="video/mp4">
</video>
<ph type="x-smartling-placeholder">

Autoplay

Laut dem HTTP-Archiv enthalten 20% der Videos im Web autoplay. autoplay wird verwendet, wenn ein Video abgespielt werden muss sofort als Videohintergrund oder als Ersatz für Animierte GIFs.

Animierte GIFs können sehr groß sein, insbesondere wenn sie viele Frames mit aufwendige Details zu erkennen. Es ist nicht ungewöhnlich, dass animierte GIFs mehrere Megabyte an Daten, was eine erhebliche Belastung der Bandbreite bedeuten kann, die dann nach wichtigeren Ressourcen. Vermeiden Sie in der Regel animierte Bildformate, da <video>-Äquivalente für diesen Medientyp viel effizienter sind.

Wenn auf Ihrer Website die automatische Wiedergabe von Videos erforderlich ist, können Sie die Funktion autoplay-Attribut direkt für das <video>-Element:

<!-- This will automatically play a video, but
     it will loop continuously and be muted: -->
<video autoplay muted loop playsinline>
  <source src="video.webm" type="video/webm">
  <source src="video.mp4" type="video/mp4">
</video>
<ph type="x-smartling-placeholder">

Indem Sie das Attribut poster mit der Intersection Observer API kombinieren, können Sie Konfiguriere deine Seite so, dass Videos nur dann heruntergeladen werden, wenn sie sich im Darstellungsbereich befinden. Das Bild poster könnte ein Bildplatzhalter von geringer Qualität sein, z. B. das erste Frame des Videos. Sobald das Video im Darstellungsbereich erscheint, startet der Browser wenn das Video heruntergeladen wird. Dies könnte die Ladezeiten für Inhalte im ersten Darstellungsbereichs. Wenn Sie ein poster-Image für autoplay verwenden, erhalten Ihre Nutzer ein Bild, das nur kurz angezeigt wird, bis das Video vollständig wiedergegeben wurde. geladen wird und die Wiedergabe beginnt.

<ph type="x-smartling-placeholder">

Vom Nutzer initiierte Wiedergabe

Im Allgemeinen beginnt der Browser mit dem Herunterladen einer Videodatei, sobald der HTML- der Parser das <video>-Element erkennt. Wenn du <video>-Elemente hast, bei denen der der Nutzer die Wiedergabe startet, möchten Sie wahrscheinlich nicht, dass der Download des Videos beginnt. bis der Nutzer damit interagiert hat.

Mit der <video> kannst du festlegen, was für Videoressourcen heruntergeladen wird. des preload-Attributs:

  • Mit der Einstellung preload="none" wird dem Browser mitgeteilt, dass kein Videoinhalt sollte vorab geladen werden.
  • Mit der Einstellung preload="metadata" werden nur Videometadaten abgerufen, z. B. die die Dauer und möglicherweise andere flüchtige Informationen.

Die Einstellung preload="none" ist wahrscheinlich am sinnvollsten beim Laden Videos, für die Nutzer die Wiedergabe starten müssen.

<ph type="x-smartling-placeholder">

In diesem Fall können Sie die Nutzerfreundlichkeit verbessern, indem Sie ein poster-Bild hinzufügen. Dadurch erhält der Nutzer mehr Kontext zum Inhalt des Videos. Wenn außerdem wenn das Posterbild dein LCP-Element ist, kannst du für das Bild poster Priorität mithilfe des Hinweis <link rel="preload"> in Kombination mit fetchpriority="high":

<link rel="preload" as="image" href="poster.jpg" fetchpriority="high">
<ph type="x-smartling-placeholder">

Embeds API

Angesichts der Komplexität bei der effizienten Optimierung und Bereitstellung von Videoinhalten ist es sinnvoll, das Problem auf spezielle Videodienste wie wie YouTube oder Vimeo. Solche Dienste optimieren die Bereitstellung von Videos für Sie, Das Einbetten eines Videos von einem Drittanbieterdienst kann eine eigene Auswirkung auf da die eingebetteten Videoplayer oft viele zusätzliche etwa JavaScript.

Angesichts dieser Tatsache können Einbettungen von Drittanbieter-Videos erhebliche Auswirkungen auf die die Leistung. Laut dem HTTP-Archiv blockieren YouTube-Einbettungen den Hauptthread für mehr als 1,7 Sekunden für die durchschnittliche Website. Hauptthread blockieren für zu lange dauert, stellt ein ernsthaftes Problem mit der Nutzererfahrung dar, das Interaction to Next Paint (INP) der Seite. Sie können jedoch einen Kompromiss finden, indem die Einbettung nicht sofort beim ersten Seitenaufbau geladen wird, sondern Du kannst einen Platzhalter für die Einbettung erstellen, der dann durch die eigentliche Videoeinbettung ersetzt wird. wenn die Nutzenden damit interagieren.

<ph type="x-smartling-placeholder">

Video demos

Wissen testen

Die Reihenfolge der <source>-Elemente innerhalb einer Übergeordnetes <video>-Element bestimmt nicht, welche Videoressource heruntergeladen wird.

Richtig
Falsch

Das Attribut poster des <video>-Elements gilt als LCP-Kandidat.

Falsch
Richtig

Nächster Schritt: Webschriftarten optimieren

Als Nächstes werden Schriftarten behandelt. Das Optimieren der Schriftarten Ihrer Website wird oft übersehen, kann aber großen Einfluss auf die Gesamtladegeschwindigkeit Ihrer Website haben. als LCP und Cumulative Layout Shift (CLS).