Spec-Zone.ru › Web APIs

RTCEncodedVideoFrame

Примечание: Эта функция доступна в посвящённых веб-воркерах.

Объект RTCEncodedVideoFrame из API WebRTC представляет закодированную видеокадр в потоке приёмника или отправителя WebRTC, который можно изменить с помощью преобразования закодированного видео WebRTC.

Свойства экземпляра

RTCEncodedVideoFrame.type Только для чтения

Возвращает, является ли текущий кадр ключевым кадром, кадром дельты или пустым кадром.

RTCEncodedVideoFrame.timestamp Только для чтения Устарело Нестандартный

Возвращает отметку времени, в который началась выборка кадра.

RTCEncodedVideoFrame.data

Возвращает буфер, содержащий закодированные данные кадра.

Методы экземпляра

RTCEncodedVideoFrame.getMetadata()

Возвращает метаданные, связанные с кадром.

Описание

Необработанные данные видео генерируются как последовательность кадров, где каждый кадр представляет собой двумерный массив значений пикселей. Кодеки видео преобразуют этот необработанный вход в сжатое представление оригинала для передачи и хранения. Общим подходом является отправка «ключевых кадров», содержащих достаточно информации для воспроизведения всего изображения с относительно низкой скоростью, а между ключевыми кадрами отправлять множество гораздо меньших «кадров дельты», которые просто кодируют изменения с момента предыдущего кадра.

Существует множество различных кодеков, таких как H.264, VP8 и VP9, каждый из которых имеет разные процессы и конфигурации кодирования, предлагая различные компромиссы между эффективностью сжатия и качеством видео.

Объект RTCEncodedVideoFrame представляет собой отдельный кадр, закодированный с помощью определенного кодека видео. Свойство type указывает, является ли кадр «ключевым» или «кадром дельты», и вы можете использовать метод getMetadata(), чтобы получить другие детали о методе кодирования. Свойство data предоставляет доступ к закодированным данным изображения для кадра, которые затем могут быть изменены («преобразованы») при отправке или приёме кадров.

Примеры

Этот фрагмент кода демонстрирует обработчик события rtctransform в Worker, который реализует TransformStream и передает закодированные кадры через него из event.transformer.readable в event.transformer.writable (event.transformer — RTCRtpScriptTransformer, сторонняя часть RTCRtpScriptTransform).

Если преобразователь вставлен в поток видео, метод transform() вызывается с RTCEncodedVideoFrame всякий раз, когда новый кадр помещается в очередь на event.transformer.readable. Метод transform() показывает, как это можно прочитать, изменить, инвертировав биты, и поместить в очередь на контроллер (это в конечном итоге передаёт его через event.transformer.writable, а затем обратно в поток WebRTC).

addEventListener("rtctransform", (event) => {
  const async transform = new TransformStream({
    async transform(encodedFrame, controller) {
      // Reconstruct the original frame.
      const view = new DataView(encodedFrame.data);

      // Construct a new buffer
      const newData = new ArrayBuffer(encodedFrame.data.byteLength);
      const newView = new DataView(newData);

      // Negate all bits in the incoming frame
      for (let i = 0; i < encodedFrame.data.byteLength; ++i) {
        newView.setInt8(i, ~view.getInt8(i));
      }

      encodedFrame.data = newData;
      controller.enqueue(encodedFrame);
    },
  });
  event.transformer.readable
    .pipeThrough(transform)
    .pipeTo(event.transformer.writable);
});

Обратите внимание, что более полные примеры приведены в Использовании преобразований закодированного видео WebRTC.

Спецификации

Спецификация
WebRTC Encoded Transform
# rtcencodedvideoframe

Совместимость с браузерами

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
RTCEncodedVideoFrame 127 127 Нет 113 Нет 127 Нет 84 Нет Нет 127
RTCEncodedVideoFrame 86 86 117 72 15.4 86 117 61 15.4 14.0 86
data 86 86 117 72 15.4 86 117 61 15.4 14.0 86
getMetadata 86 86 117 72 15.4 86 117 61 15.4 14.0 86
timestamp 86 86 117 72 15.4 86 117 61 15.4 14.0 86
type 86 86 117 72 15.4 86 117 61 15.4 14.0 86

См. также

  • Использование преобразований закодированного видео WebRTC
  • TransformStream
  • RTCRtpScriptTransformer
  • RTCEncodedAudioFrame

© 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/RTCEncodedVideoFrame

Spec-Zone.ru

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