[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/API/WebCodecs_API/Video_processing_concepts [Back]  [Original]

Konzepte der Videobearbeitung - Web-APIs | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Konzepte der Videobearbeitung

Bevor Sie mit der WebCodecs API arbeiten, ist es hilfreich, einige grundlegende Konzepte darber zu verstehen, wie Video funktioniert, wie es komprimiert wird und wie Videodateien strukturiert sind. Dieser Leitfaden behandelt die Schlsselkonzepte: Videoframes, Codecs, Kodierung und Dekodierung, Container sowie Multiplexing und Demultiplexing.

In diesem Artikel

Videoframes

Ein Video ist eine Abfolge von Bildern, die in schneller Folge angezeigt werden. Jedes Bild in der Abfolge wird als Videoframe bezeichnet, und jeder Frame hat einen zugehrigen Zeitstempel, der angibt, wann er angezeigt werden soll.

Videoframes [Videoframes]

Jedes Pixel in einem Videoframe wird durch eine Reihe von numerischen Farbkanalwerten dargestellt. Unkomprimiert ist ein einzelner 4K-Frame (~8 Millionen Pixel) ungefhr 25 MB gro. Bei 30 Frames pro Sekunde wrde eine Stunde unkomprimiertes 4K-Video ber 3 TB gro sein, was fr die Speicherung oder das Streaming unpraktisch gro ist.

Codecs wurden entwickelt, um Video zu komprimieren, typischerweise um 1-2 Grenordnungen, um Videoinhalte unter den blichen Netzwerk- und Speicherbeschrnkungen von Gerten praktisch speichern und streamen zu knnen.

Codecs

Ein Codec (kurz fr Kodieren/Dekodieren) ist ein Algorithmus zur Komprimierung und Dekomprimierung von Videodaten. Codecs reduzieren die Dateigre drastisch typischerweise um den Faktor 100 oder mehr durch eine Vielzahl unterschiedlicher Techniken. Whrend im Browser einige Videocodecs wie vp9, av1 und h264 verwendet werden, wenden sie alle einige der folgenden Techniken an:

Rumliche Kompression

Codecs entfernen selektiv hochfrequente Details aus jedem Frame feine Texturen und scharfe Kanten, die fr das menschliche Auge weniger wahrnehmbar sind.

Entfernen von hochdetaillierten Informationen [Entfernen von hochdetaillierten Informationen]

Der Grad der entfernten Details wird von zwei Dingen bestimmt: der Bitrate, die bestimmt, wie viel Daten der Ausgabestream verwendet, und dem Codec-String, der das Profil und die Ebene spezifiziert, die die Kodierungslogik regeln. Hhere Bitraten und fhigere Profile bewahren mehr Details auf Kosten grerer Dateigren. Das Folgende zeigt das Gleichgewicht zwischen Qualitt und Bitrate, unter Verwendung von Baseline vp9 auf einem 1080p-Video:

Bitratenleiter [Bitratenleiter]

Zeitliche Kompression

Aufeinanderfolgende Frames in einem Video sind typischerweise visuell hnlich zueinander. Anstatt jeden Videoframe als unabhngiges Bild zu kodieren, berechnen Videocodecs den Unterschied zwischen den Frames und kodieren nur die Frame-Differenzen in einer kompakten binren Darstellung. Codecs verwenden typischerweise eine Reihe von Techniken wie Bewegungsentschdigung, um die Datenmenge zu reduzieren, die erforderlich ist, um Frame-Differenzen zu kodieren.

Framedifferenzen [Framedifferenzen] Codecs speichern dann den ersten Videoframe in einer Sequenz als Schlsselbild und speichern anschlieende Frames nur als Frame-Differenzen (sogenannte Delta-Frames).

Schlsselframes vs. Delta-Frames [Schlsselframes vs. Delta-Frames]

Videos werden typischerweise mit Schlsselframes in regelmigen Abstnden kodiert. Um das vollstndige aktuelle Frame fr die Anzeige eines bestimmten Delta-Frames zu konstruieren, mssen Sie das vorherige Schlsselframe und alle nachfolgenden Delta-Frames (in der Reihenfolge) bis zum aktuellen Delta-Frame dekodieren. In WebCodecs hat das EncodedVideoChunk-Interface eine type-Eigenschaft, die den Wert "key" oder "delta" annehmen kann, um anzuzeigen, ob das Chunk ein Schlsselframe oder ein Delta-Frame darstellt.

Da Delta-Frames von allen vorherigen Frames seit dem letzten Schlsselframe abhngen, kann ein Dekoder nicht an einem beliebigen Punkt in einem Video mit dem Dekodieren beginnen er muss immer mit einem Schlsselframe beginnen. Dies hat zwei praktische Auswirkungen: Suchen zu einem bestimmten Zeitstempel erfordert das Finden des am nchsten vorhergehenden Schlsselframes und das Dekodieren jedes Frames in der Reihenfolge bis zum Ziel, und Fehlererholung erfordert das berspringen bis zum nchsten Schlsselframe, bevor das Dekodieren fortgesetzt wird.

Beim Kodieren mit einem VideoEncoder ist es mglich zu bestimmen, wann ein Frame als Schlsselframe oder Delta-Frame festgelegt wird, indem der keyFrame-Parameter in der Encoder-Methode verwendet wird.

js
encoder.encode(frame, { keyFrame: true });

Kodierung und Dekodierung

Codec-Kompatibilitt

Um ntzlich zu sein, mssen Sie in der Lage sein, sowohl Video mit einem Codec zu kodieren (nicht verarbeitetes Video in komprimierte Binrdaten umwandeln) als auch dasselbe Video mit demselben Codec zu dekodieren (die komprimierten Binrdaten wieder in rohe Videoframes umwandeln). Daher hat sich die Videoindustrie um eine Handvoll Standard-Codecs wie vp9, h264, hevc und av1 gruppiert.

Anwendungen, die hauptschlich Videoinhalte erstellen (z. B. Video-Bearbeitungstools) und daher hauptschlich Video kodieren, whlen typischerweise einen Videocodec zur Kodierung, um die Kompatibilitt mit Videoplayer-Software zu maximieren.

Anwendungen, die hauptschlich Videoinhalte konsumieren (z. B. Videoplayer-Software) und daher hauptschlich Video dekodieren, werden typischerweise versuchen, so viele Codecs wie mglich zu untersttzen.

Anwendungen, die sowohl Kodierung als auch Dekodierung steuern (z. B. eine Video-Streaming-Website), haben viel mehr Flexibilitt bei der Codec-Wahl und knnen daher Codecs basierend auf Faktoren wie Kosten und Kodierungsgeschwindigkeit whlen.

Kodierung ist aufwndig

Kodierung ist erheblich rechenintensiver als Dekodierung, typischerweise um 1-2 Grenordnungen. Videokonferenzanwendungen verwenden hufig ltere Codecs wie vp8, da sie, obwohl sie bei gleicher Bitrate zu niedrigerer Videoqualitt fhren, auch weniger rechenintensiv als neuere Codecs wie vp9 sind.

Hardware-Beschleunigung

Die meisten Verbrauchergerte verfgen ber spezielle Hardware, die speziell fr die Video-Kodierung und -Dekodierung entwickelt wurde. Die Nutzung dieser speziellen Chips fr Kodierung und Dekodierung wird als Hardware-Beschleunigung bezeichnet und kann Kodierungsaufgaben im Vergleich zur herkmmlichen CPU-basierten Kodierung um 2 Grenordnungen beschleunigen.

H.264- und H.265-Kodierungen werden am hufigsten hardwarebeschleunigt, whrend die hardwarebeschleunigte Kodierung von VP9 und AV1 weniger verbreitet ist. Hardwarebeschleunigte Dekodierung ist breit verfgbar fr alle wichtigen Codecs, obwohl die AV1-Dekodierungsbeschleunigung aufgrund ihrer relativen Neuheit noch begrenzter ist.

Einer der Hauptvorteile der WebCodecs API ist die Mglichkeit, hardwarebeschleunigte Kodierung zu verwenden, wodurch Anwendungen wie Videobearbeitung und leistungsstarkes Streaming auf Verbrauchergerten praktisch werden.

Container

Codecs behandeln nur die Kodierung von rohen Mediendaten in eine binre komprimierte Form und umgekehrt. Eine Videodatei, wie eine WebM-, MP4- oder MKV-Datei, enthlt sowohl Metadaten wie Spurinformationen, Dauer etc. als auch kodierte Mediendaten.

Container [Container]

Jeder Videodateityp hat seine eigene Containerspezifikation, wie die WebM-Spezifikation und die MP4-Spezifikation, die festlegt, wie Metadaten und kodierte Medien innerhalb des Dateistreams formatiert und gespeichert werden sollen.

Ein bestimmtes Containerformat kann tatschlich eine Vielzahl unterschiedlicher Codecs untersttzen. Hier sind die gngigsten Container und die von ihnen untersttzten Codecs:

Container Video-Codecs Audio-Codecs
MP4 (.mp4) H.264, H.265, AV1 AAC, MP3, Opus
WebM (.webm) VP8, VP9, AV1 Vorbis, Opus
MKV (.mkv) H.264, H.265, VP9, AV1 AAC, MP3, Opus, FLAC
MPEG-TS (.ts) H.264, H.265 AAC, MP3
OGG (.ogg) Theora Vorbis, Opus

Ein Videoplayer muss sowohl der Containerspezifikation folgen, um Metadaten und kodierte Chunks zu extrahieren (Demultiplexing), als auch das kodierte Video/Audio dekodieren, um die Videodatei abzuspielen.

Whrend das HTMLVideoElement sowohl Demultiplexing als auch Dekodierung behandelt und hauptschlich MP4- und WebM-Formate untersttzt, beschftigt sich die WebCodecs API nicht mit Containerformaten.

Um ein Video mit WebCodecs abzuspielen, ist es notwendig, sowohl die Datei demultiplexen (typischerweise mit einer Demultiplexing-Bibliothek) als auch die kodierten Chunks zu dekodieren.

Demultiplexing [Demultiplexing]

Ebenso ist es notwendig, um eine Videodatei mit WebCodecs zu schreiben, auch der Containerspezifikation zu folgen, Metadaten zu schreiben und die kodierten Chunks an der richtigen Position im Ausgabestream zu platzieren. Dies wird als Multiplexing bezeichnet und wird nicht nativ von der WebCodecs API behandelt. Stattdessen ist eine Drittanbieterbibliothek wie Mediabunny erforderlich.

Siehe den Abschnitt Muxing und Demuxing auf der bersichtseite der WebCodecs API fr Bibliotheksoptionen fr Demultiplexing und Multiplexing.

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page