AudioDecoder can decode AAC, FLAC, MP3, Opus, and Vorbis.
VideoDecoder can decode VP8, VP9, H.264 and AV1 (AV1 not available on Android).
VideoEncoder can encode VP8 and VP9.
VideoTrackReader.
ImageDecoder can decode BMP, GIF, JPG, PNG, ICO, AVIF, and WebP.
Unsupported
AudioEncoder is not yet implemented.
VideoEncoder can encode H.264, but it is limited:
H.264 encoding is not available on all platforms.
The output format is Annex B. We expect the format to be AVC in the future.
new VideoFrame(pixelFormat, planes, frameInit) is not available.
ImageDecoder can’t decode SVG. We don’t expect SVG to ever be supported.
Caveats
AudioDecoder and VideoDecoder call error(undefined) to report an error. We expect the value to be a DOMException in the future.
VideoDecoder, VideoEncoder, and EncodedVideoChunk are not available in Worker contexts. Worker support will be added in the future.
VideoEncoder does not emit VideoDecoderConfig objects to describe its output. We expect configs to be emitted in the future.
Constructing a VideoFrame from an ImageBitmap produces an I420 frame. We expect this to change to RGBA or an opaque format in the future.
In some cases a valid VideoFrame has format === null and planes === null. VideoFrame.createImageBitmap() is available. We expect to add explicit conversion APIs to address these cases in the future.
ImageFrame does not provide YUV access. We expect that ImageDecoder will output VideoFrame objects in the future.
H.264 extradata and payload must be provided in AVC format.
Known Issues
AudioDecoder, VideoDecoder, and VideoEncoder may produce outputs or errors after calling reset().