RTCEncodedVideoFrame: метод getMetadata()
Примечание: Эта функция доступна в Посвященных веб-воркерах.
Метод getMetadata() интерфейса RTCEncodedVideoFrame возвращает объект, содержащий метаданные, связанные с кадром.
В него входит информация о кадре, включая его размер, кодирование видео, другие кадры, необходимые для построения полного изображения, временную метку и другую информацию.
Синтаксис
getMetadata()
Параметры
Нет.
Возвращаемое значение
Объект со следующими свойствами:
frameId-
Положительное целое число, указывающее идентификатор этого кадра.
dependencies-
Arrayположительных целых чисел, указывающих frameIds кадров, от которых зависит этот кадр. Для ключевого кадра он будет пустым, так как ключевой кадр содержит всю необходимую информацию для построения изображения. Для дельта-кадра он будет содержать список всех кадров, необходимых для отрисовки этого кадра. Тип кадра можно определить, используяRTCEncodedVideoFrame.type. width-
Положительное целое число, указывающее ширину кадра. Максимальное значение — 65535.
height-
Положительное целое число, указывающее высоту кадра. Максимальное значение — 65535.
spatialIndex-
Положительное целое число, указывающее пространственный индекс кадра. Некоторые кодеки позволяют генерировать слои кадров с разными уровнями разрешения. Кадры на более высоких уровнях могут быть выборочно удалены для снижения битрейта при необходимости, сохраняя при этом приемлемое качество видео.
temporalIndex-
Положительное целое число, указывающее временной индекс кадра. Некоторые кодеки группируют кадры в слои на основе того, помешает ли удаление кадра декодированию других. Кадры на более высоких уровнях могут быть выборочно удалены для снижения битрейта при необходимости, сохраняя при этом приемлемое качество видео.
synchronizationSource-
Положительное целое число, указывающее источник синхронизации («ssrc») потока пакетов RTP, описываемых этим закодированным видеокадром. Источником может быть, например, камера, микрофон или приложение-микшер, объединяющее несколько источников. Все пакеты от одного источника используют один и тот же источник времени и пространство последовательности, поэтому их можно упорядочить относительно друг друга. Обратите внимание, что два кадра с одинаковым значением относятся к одному источнику (подробнее см.
RTCInboundRtpStreamStats.ssrc). payloadType-
Положительное целое число в диапазоне от 0 до 127, описывающее формат RTP-нагрузки. Сопоставление значений с форматами определено в RFC3550.
contributingSources-
Arrayисточников (ssrc), которые внесли свой вклад в кадр. Рассмотрим случай приложения для конференций, которое объединяет аудио и видео от нескольких пользователей.synchronizationSourceбудет содержать ssrc приложения, аcontributingSources— значения ssrc всех отдельных источников видео и аудио. timestamp-
Временная метка представления медиа (PTS) в микросекундах исходного кадра, соответствующая временной метке исходных кадров, соответствующих этому кадру. Используется для синхронизации отдельных потоков видео, аудио, субтитров и других потоков, относящихся к одному представлению.
Примеры
Этот пример реализации преобразования закодированных данных WebRTC демонстрирует, как получить метаданные кадра в функции transform() и вывести их в журнал.
addEventListener("rtctransform", (event) => {
const async transform = new TransformStream({
async transform(encodedFrame, controller) {
// Get the metadata and log
const frameMetaData = encodedFrame.getMetadata();
console.log(frameMetaData)
// Enqueue the frame without modifying
controller.enqueue(encodedFrame);
},
});
event.transformer.readable
.pipeThrough(transform)
.pipeTo(event.transformer.writable);
});
Результат для локальной веб-камеры может выглядеть так, как показано ниже. Обратите внимание, что источников нет, так как всего один источник.
{
"contributingSources": [],
"dependencies": [
405
],
"frameId": 406,
"height": 480,
"payloadType": 120,
"spatialIndex": 0,
"synchronizationSource": 3956716931,
"temporalIndex": 0,
"width": 640
}
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
getMetadata |
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/RTCEncodedVideoFrame/getMetadata