Spec-Zone.ru › Web APIs

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).

Исключения

InvalidStateError DOMException

Выбрасывается, если state не "configured".

DataError DOMException

Выбрасывается, если 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API