Start · Sprachen · JavaScript · Referenz · VideoEncoder.configure()

VideoEncoder.configure()

Methode

Setzt den Zustand eines <code>VideoEncoder</code> auf <code>"configured"</code> und bereitet ihn asynchron darauf vor, <code>VideoFrame</code>-Objekte mit den angegebenen Codec-Parametern zu kodieren.

seit JavaScript WebCodecs – Chrome/Edge 94+, Safari 16.4+, Firefox Kategorie: webapi

Signatur

VideoEncoder.prototype.configure(config)

Beschreibung

Mit configure() legst du fest, wie ein VideoEncoder kodiert: Codec, Auflösung, Bitrate, Bildrate, Hardware-Beschleunigung, Latenzmodus und weitere Optionen. Erst nach diesem Aufruf nimmt der Encoder Frames über encode() an. Der Zustand encoder.state wechselt sofort auf "configured". Die eigentliche Initialisierung des Codecs läuft aber asynchron in der Steuerungswarteschlange (control message queue) des Encoders.

Die Methode gibt kein Promise zurück. Formal ungültige Konfigurationen, etwa ein leerer codec-String oder width: 0, werfen sofort einen TypeError. Scheitert die Konfiguration erst später, zum Beispiel weil der Codec auf dem Gerät nicht verfügbar ist, schließt der Browser den Encoder. Dann ruft er den error-Callback aus dem Konstruktor mit einer DOMException vom Typ NotSupportedError auf. Prüfe die Konfiguration deshalb vorher mit VideoEncoder.isConfigSupported().

Du kannst configure() mehrfach aufrufen. So passt du etwa die Bitrate während eines Live-Streams an die Netzqualität an oder wechselst die Auflösung. Frames, die schon in der Warteschlange stehen, werden noch mit der alten Konfiguration kodiert. Alle folgenden encode()-Aufrufe nutzen die neue. Beim ersten Chunk nach einer (Neu-)Konfiguration enthält das Metadaten-Objekt des output-Callbacks ein decoderConfig. Das brauchst du auf der Empfängerseite für VideoDecoder.configure().

Parameter

Name Typ Default Beschreibung
$config Pflicht VideoEncoderConfig Objekt mit den Kodier-Parametern. Die wichtigsten Felder werden unten einzeln beschrieben.
$config.codec Pflicht string Codec-String, z. B. "avc1.42001f" (H.264 Baseline), "vp8", "vp09.00.10.08" (VP9), "av01.0.04M.08" (AV1) oder "hvc1.1.6.L93.B0" (HEVC).
$config.width Pflicht number Breite der kodierten Frames in Pixeln (> 0).
$config.height Pflicht number Höhe der kodierten Frames in Pixeln (> 0).
$config.displayWidth number width Vorgesehene Anzeigebreite, z. B. bei nicht-quadratischen Pixeln.
$config.displayHeight number height Vorgesehene Anzeigehöhe.
$config.bitrate number Ziel-Bitrate in Bit pro Sekunde, z. B. 2_000_000.
$config.framerate number Erwartete Bildrate in Bildern pro Sekunde. Der Encoder nutzt sie für die Bitraten-Steuerung.
$config.hardwareAcceleration "no-preference" | "prefer-hardware" | "prefer-software" "no-preference" Hinweis, ob ein Hardware- oder ein Software-Encoder bevorzugt wird.
$config.alpha "discard" | "keep" "discard" Legt fest, ob der Alphakanal mitkodiert oder verworfen wird.
$config.scalabilityMode string Modus für skalierbare Kodierung (SVC) nach WebRTC-Notation, z. B. "L1T2" oder "L1T3".
$config.bitrateMode "variable" | "constant" | "quantizer" "variable" Art der Bitraten-Steuerung. Bei "quantizer" legst du den Quantisierer pro Frame über die Optionen von encode() fest.
$config.latencyMode "quality" | "realtime" "quality" "realtime" senkt die Latenz, etwa für Videokonferenzen. Der Encoder darf dafür Frames auslassen und Qualität opfern.
$config.contentHint string Hinweis auf die Art des Inhalts, z. B. "motion", "detail" oder "text".
$config.avc { format: "avc" | "annexb" } { format: "avc" } Nur für H.264: Ausgabeformat der Bitstream-Chunks. "annexb" erzeugt Startcodes, wie sie etwa für Streaming üblich sind.
$config.hevc { format: "hevc" | "annexb" } { format: "hevc" } Nur für HEVC: Ausgabeformat des Bitstreams.

Rückgabewert

Typ
undefined
Beschreibung
Kein Rückgabewert. Fehler, die erst bei der asynchronen Initialisierung auftreten, kommen über den error-Callback des Encoders an.