VideoEncoder: метод encode()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех распространённых браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в посвящённых веб-воркерах.
Метод encode() интерфейса VideoEncoder асинхронно кодирует VideoFrame. Закодированные данные (EncodedVideoChunk) или ошибка в конечном итоге будут возвращены через обратные вызовы, предоставленные конструктору VideoEncoder.
Синтаксис
encode(frame) encode(frame, options)
Параметры
frame-
Объект
VideoFrame. optionsНеобязательный-
Объект, содержащий следующие члены:
keyFrameНеобязательный-
boolean, по умолчаниюfalse, предоставляя агенту пользователя гибкость в решении, должен ли этот кадр кодироваться как ключевой кадр. Еслиtrue, это означает, что данный кадр должен быть закодирован как ключевой кадр. vp9Необязательный-
Параметры кодирования для кодека VP9.
quantizer-
Значение квантизатора кадра от 0 до 63. Эффективно только если
VideoEncoderбыл настроен с режимом битрейтаquantizer.
av1Необязательный-
Параметры кодирования для кодека AV1.
quantizer-
Значение квантизатора кадра от 0 до 63. Эффективно только если
VideoEncoderбыл настроен с режимом битрейтаquantizer.
avcНеобязательный-
Параметры кодирования для кодека AVC (H.264).
quantizer-
Значение квантизатора кадра от 0 до 51. Эффективно только если
VideoEncoderбыл настроен с режимом битрейтаquantizer.
hevcНеобязательный-
Параметры кодирования для кодека HEVC (H.265).
quantizer-
Значение квантизатора кадра от 0 до 51. Эффективно только если
VideoEncoderбыл настроен с режимом битрейтаquantizer.
Возвращаемое значение
Ничего (undefined).
Исключения
-
InvalidStateErrorDOMException -
Выбрасывается, если
stateне"configured". -
DataErrorDOMException -
Выбрасывается, если
chunkне может быть декодирован из-за зависимости от других кадров для декодирования.
Примеры
В следующем примере encode передаётся VideoFrame, и параметр options указывает, что этот кадр должен рассматриваться как ключевой.
encoder.encode(frame, { keyFrame: true });
Устанавливается значение QP для каждого кадра для кодирования отдельных кадров.
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);
Спецификации
| Спецификация |
|---|
| WebCodecs # dom-videoencoder-encode |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
encode |
94 | 94 | 130 | 80 | 16.4 | 94 | Нет | 66 | 16.4 | 17.0 | 94 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/VideoEncoder/encode