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 закодированных преобразований.
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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