VideoEncoder: encode() method
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Dedicated Web Workers.
The encode()
method of the VideoEncoder
interface asynchronously encodes a VideoFrame
.
Encoded data (EncodedVideoChunk
) or an error will eventually be returned via the callbacks provided to the VideoEncoder
constructor.
Syntax
encode(frame)
encode(frame, options)
Parameters
frame
-
A
VideoFrame
object. options
Optional-
An object containing the following members:
keyFrame
Optional-
A
boolean
, defaulting tofalse
giving the user agent flexibility to decide if this frame should be encoded as a key frame. Iftrue
this indicates that the given frame must be encoded as a key frame. vp9
Optional-
Encode options for the VP9 codec.
quantizer
-
Frame quantizer value 0 to 63. Only effective if
VideoEncoder
was configured withquantizer
bitrate mode.
av1
Optional-
Encode options for the AV1 codec.
quantizer
-
Frame quantizer value 0 to 63. Only effective if
VideoEncoder
was configured withquantizer
bitrate mode.
avc
Optional-
Encode options for the AVC (H.264) codec.
quantizer
-
Frame quantizer value 0 to 51. Only effective if
VideoEncoder
was configured withquantizer
bitrate mode.
hevc
Optional-
Encode options for the HEVC (H.265) codec.
quantizer
-
Frame quantizer value 0 to 51. Only effective if
VideoEncoder
was configured withquantizer
bitrate mode.
Return value
None (undefined
).
Exceptions
InvalidStateError
DOMException
-
Thrown if the
state
is not"configured"
. DataError
DOMException
-
Thrown if the given
frame
object's rotation and flip do not match the rotation and flip of the firstVideoFrame
passed toencode()
(the "active orientation").
Examples
In the following example encode
is passed a VideoFrame
, and the options parameter indicating that this frame should be considered a keyframe.
encoder.encode(frame, { keyFrame: true });
Setting per-frame QP value for encoding individual frames.
const encoder = new VideoEncoder(init);
const encoderConfig = {
codec: "vp09.00.10.08",
width: 800,
height: 600,
bitrateMode: "quantizer",
framerate: 30,
latencyMode: "realtime",
};
encoder.configure(encoderConfig);
const encodeOptions = { keyFrame: false };
const qp = calculateQp(codec, frame);
if (codec.includes("vp09")) {
encodeOptions.vp9 = { quantizer: qp };
} else if (codec.includes("av01")) {
encodeOptions.av1 = { quantizer: qp };
} else if (codec.includes("avc")) {
encodeOptions.avc = { quantizer: qp };
} else if (codec.includes("hvc1") || codec.includes("hev1")) {
encodeOptions.hevc = { quantizer: qp };
}
encoder.encode(frame, encodeOptions);
Specifications
Specification |
---|
WebCodecs # dom-videoencoder-encode |