VideoEncoder: VideoEncoder() constructor
========================================

Limited availability
--------------------

This feature is not Baseline because it does not work in some of the most widely-used browsers.

* Learn more
* See full compatibility
* Report feedback
**Secure context:** This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The **`VideoEncoder()`** constructor creates a new `VideoEncoder` object with the provided `options.output` callback assigned as the output callback, the provided `options.error` callback as the error callback, and sets the `VideoEncoder.state` to `"unconfigured"`.

Syntax
------


```js
new VideoEncoder(options)
```

### Parameters

`options`

An object containing two required callbacks.

`output`

A callback which takes an `EncodedVideoChunk` object as the first argument, and an optional metadata object as the second. The metadata object has three members:

`decoderConfig` Optional

An object containing:

`codec`

A string containing a valid codec string.

`description` Optional

An `ArrayBuffer`, a `TypedArray`, or a `DataView` containing a sequence of codec-specific bytes, commonly known as "extradata".

`codedWidth` Optional

An integer representing the width of the `VideoFrame` in pixels, potentially including non-visible padding, and prior to considering potential ratio adjustments.

`codedHeight` Optional

An integer representing the height of the `VideoFrame` in pixels, potentially including non-visible padding, and prior to considering potential ratio adjustments.

`displayAspectWidth` Optional

An integer representing the horizontal dimension of the `VideoFrame`'s aspect ratio when displayed.

`displayAspectHeight` Optional

An integer representing the vertical dimension of the `VideoFrame`'s aspect ratio when displayed.

`colorSpace` Optional

An object you pass to the `VideoColorSpace` constructor as the `init` argument, configuring the `VideoFrame.colorSpace` for `VideoFrames` associated with this `decoderConfig` object. If `colorSpace` exists, the provided values will override any in-band values from the bitstream.

`hardwareAcceleration` Optional

A string that configures hardware acceleration for this codec. Defaults to `"no-preference"`. Options are:

* `"no-preference"`
* `"prefer-hardware"`
* `"prefer-software"`

`optimizeForLatency` Optional

A boolean representing whether the selected decoder should be configured to minimize the number of `EncodedVideoChunks` that have to be decoded before a `VideoFrame` is output.


`svc` Optional

An optional object with only one member: `temporalLayerId`, which is a number that identifies the temporal layer for the associated `EncodedVideoChunk`.

`alphaSideData` Optional

 An `ArrayBuffer`, a `TypedArray`, or a `DataView`
 that contains the `EncodedVideoChunk`'s extra alpha channel data.



`error`

A callback which takes an `Error` object as its only argument.


Examples
--------

In the following example a `VideoEncoder` is created with the two required callback functions, one to deal with the encoded frame and the other to handle errors.


```js
const videoEncoder = new VideoEncoder({
  output(chunk, metadata) {
    console.log(chunk.timestamp);
    console.log(chunk.byteLength);
    console.log(JSON.stringify(metadata));
  },
  error(error) {
    console.log(error);
  },
});
```

Specifications
--------------

| Specification |
| --- |
| WebCodecs # dom-videoencoder-videoencoder |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.