Signatur
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
error-Callback des Encoders an.