Spec-Zone.ru › Web APIs

RTCEncodedAudioFrame

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

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

Интерфейс предоставляет методы и свойства для получения метаданных о кадре, позволяя определить его формат и порядок в последовательности кадров. Свойство data даёт доступ к закодированным данным кадра в виде буфера, который может быть зашифрован или иным образом изменён преобразованием.

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

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

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

RTCEncodedAudioFrame.data

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

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

RTCEncodedAudioFrame.getMetadata()

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

Примеры

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

Если преобразователь вставлен в аудиопоток, метод transform() вызывается с RTCEncodedAudioFrame всякий раз, когда новый кадр добавляется в 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);

      //Encrypt frame bytes using the encryptFunction() method (not shown)
      for (let i = 0; i < encodedFrame.data.byteLength; ++i) {
        const encryptedByte = encryptFunction(~view.getInt8(i));
        newView.setInt8(i, encryptedByte);
      }

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

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

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

Спецификация
WebRTC закодированное преобразование
# rtcencodedaudioframe

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
RTCEncodedAudioFrame 127 127 Нет 113 Нет 127 Нет 84 Нет Нет 127
RTCEncodedAudioFrame 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

См. также

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

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

Spec-Zone.ru

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