RTCRtpScriptTransform
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Интерфейс RTCRtpScriptTransform API WebRTC используется для вставки кодированного преобразования WebRTC (a TransformStream, выполняемого в потоке рабочего процесса) в потоки отправителя и получателя WebRTC.
Конструктор
RTCRtpScriptTransform()-
Создает новый экземпляр объекта
RTCRtpScriptTransform.
Свойства экземпляра
Нет.
Методы экземпляра
Нет.
Описание
Экземпляры RTCRtpScriptTransform создаются с Worker, в котором будет выполняться код потока преобразования, вместе с (необязательным) объектом options и массивом передаваемых объектов, которые будут переданы рабочему потоку. Затем они добавляются в входящие и исходящие потоки RTC, присваивая их свойствам RTCRtpReceiver.transform и RTCRtpSender.transform соответственно.
При создании этого объекта и при каждом поступлении закодированной кадра, событие rtctransform генерируется в глобальном объекте рабочего потока. Свойство события transformer — это RTCRtpScriptTransformer, аналог объекта RTCRtpScriptTransform на основной нити. У него есть свойства readable (ReadableStream) и writable (WritableStream), которые были переданы из основной нити RTCRtpScriptTransform — и в этом контексте они не являются общедоступными. Если соответствующее RTCRtpScriptTransform используется с RTCRtpReceiver, то очередь readable принимает поступающие закодированные аудио- или видеокадры от пакетировщика. Если же используется с RTCRtpSender, тогда readable содержит кадры, полученные от кодека.
Обработчик событий rtctransform потока рабочего процесса определяет цепь потоков. Она перенаправляет закодированные кадры из event.transformer.readable, через TransformStream, который определяет функцию преобразования, и доходит до event.transformer.writable. В объекте event.transformer также содержится объект options , переданный из конструктора RTCRtpScriptTransform (если определен), который можно использовать для определения источника события и, следовательно, конкретного TransformStream для добавления в цепь.
Примеры
Обратите внимание, что эти примеры демонстрируют, как определяется и используется RTCRtpScriptTransform. Код преобразования потока рабочего процесса рассматривается как часть более полного примера в Использование кодированных преобразований WebRTC.
Добавление преобразования для исходящих кадров
Этот пример демонстрирует, как можно транслировать видео с веб-камеры пользователя по WebRTC, добавив кодированное преобразование WebRTC для изменения исходящих потоков. Код предполагает, что есть соединение RTCPeerConnection с именем peerConnection, которое уже подключено к удалённому узлу.
Сначала мы получаем MediaStreamTrack, используя getUserMedia() для получения видео MediaStream с устройства, а затем метод MediaStream.getTracks() для получения первого MediaStreamTrack в потоке.
Трек добавляется в соединение peer с помощью addTrack() и отправляется. Метод addTrack() возвращает RTCRtpSender, используемый для отправки трека.
// Get Video stream and MediaTrack
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
const [track] = stream.getTracks();
const videoSender = peerConnection.addTrack(track, stream);
Затем создается RTCRtpScriptTransform с использованием скрипта рабочего потока, который определяет преобразование, и (необязательного) объекта, который может использоваться для передачи произвольных сообщений рабочему потоку (в данном случае мы использовали свойство name со значением "senderTransform", чтобы указать рабочему потоку, что это преобразование будет добавлено к исходящему потоку). Затем мы добавляем преобразование к отправителю, присваивая его свойству RTCRtpSender.transform.
// Create a worker containing a TransformStream
const worker = new Worker("worker.js");
videoSender.transform = new RTCRtpScriptTransform(worker, {
name: "senderTransform",
});
Обратите внимание, что вы можете добавить преобразование в любое время. Однако добавление его сразу после вызова addTrack() позволит преобразованию получить первый закодированный кадр, который будет отправлен.
Добавление преобразования для входящих кадров
Этот пример показывает, как добавить кодированное преобразование WebRTC для изменения входящего потока. Код предполагает, что есть соединение RTCPeerConnection с именем peerConnection, которое уже подключено к удалённому узлу.
Сначала мы добавляем обработчик события track события трека для захвата события, когда транслируется новый трек. Внутри обработчика мы создаём RTCRtpScriptTransform и добавляем его к event.receiver.transform (event.receiver — это RTCRtpReceiver). Как и в предыдущем примере, конструктор принимает объект со свойством name, но здесь мы используем receiverTransform в качестве значения, чтобы указать рабочему потоку, что кадры поступают из пакетировщика.
peerConnection.ontrack = (event) => {
const worker = new Worker("worker.js");
event.receiver.transform = new RTCRtpScriptTransform(worker, {
name: "receiverTransform",
});
received_video.srcObject = event.streams[0];
};
Обратите внимание, что вы можете добавить поток преобразования в любое время. Однако добавление его в обработчик события track гарантирует, что поток преобразования получит первый закодированный кадр для трека.
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
RTCRtpScriptTransform |
Нет | Нет | 117 | Нет | 15.4 | Нет | 117 | Нет | 15.4 | Нет | Нет |
RTCRtpScriptTransform |
Нет | Нет | 117 | Нет | 15.4 | Нет | 117 | Нет | 15.4 | Нет | Нет |
См. также
© 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/RTCRtpScriptTransform