Spec-Zone.ru › Web APIs

RTCStatsReport

Базовая Широко доступная *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.

* Некоторые части этой функции могут иметь различный уровень поддержки.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Интерфейс RTCStatsReport API WebRTC предоставляет отчёт о статистике для RTCPeerConnection, RTCRtpSender или RTCRtpReceiver.

Экземпляр RTCStatsReport — это только для чтения Map-подобный объект, в котором каждый ключ — идентификатор объекта, для которого предоставляется статистика, а соответствующее значение — объект словаря со статистикой.

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

RTCStatsReport.size

Возвращает количество элементов в объекте RTCStatsReport.

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

RTCStatsReport.entries()

Возвращает новый объект итератора, который содержит массив из двух элементов — [id, statistic-dictionary] — для каждого элемента в объекте RTCStatsReport, в порядке добавления.

RTCStatsReport.forEach()

Вызывает callbackFn один раз для каждой пары «ключ-значение» в объекте RTCStatsReport, в порядке добавления. Если в forEach передан параметр thisArg, он будет использоваться в качестве this значения для каждого обратного вызова.

RTCStatsReport.get()

Возвращает словарь статистики, связанный с переданным id, или undefined если такого нет.

RTCStatsReport.has()

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

RTCStatsReport.keys()

Возвращает новый объект итератора, который содержит ключи (идентификаторы) для каждого элемента в объекте RTCStatsReport, в порядке добавления.

RTCStatsReport.values()

Возвращает новый объект итератора, который содержит значения (объекты статистики) для каждого элемента в объекте RTCStatsReport, в порядке добавления.

RTCStatsReport[Symbol.iterator]()

Возвращает новый объект итератора, который содержит массив из двух элементов — [id, statistic-dictionary] — для каждого элемента в объекте RTCStatsReport, в порядке добавления.

Описание

Promise, разрешающий в RTCStatsReport, возвращается методами RTCRtpReceiver.getStats(), RTCRtpSender.getStats() и RTCPeerConnection.getStats(). Вызов getStats() на RTCPeerConnection позволяет указать, хотите ли вы получить статистику исходящих, входящих данных или статистику для всего соединения. Версии getStats() для RTCRtpReceiver и RTCRtpSender возвращают только входящую и исходящую статистику соответственно.

Отчёт о статистике — это только для чтения Map-подобный объект: упорядоченный словарь, где свойства — id строки, уникально идентифицирующие объект WebRTC, который был проанализирован для получения определённого набора статистики, а значение — объект словаря, содержащий эту статистику. RTCStatsReport можно перебирать и использовать аналогично только для чтения Map.

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

Общие свойства экземпляра

Все типы словарей имеют следующие свойства:

id

Строка, которая уникально идентифицирует объект, который отслеживался для получения набора статистики. Это значение сохраняется в отчётах (по крайней мере) в течение всего времени жизни соединения. Однако обратите внимание, что для некоторых статистик идентификатор может отличаться между браузерами и для последующих соединений, даже с тем же участником.

timestamp

Объект отметки времени высокой точности (DOMHighResTimeStamp), указывающий время, в которое был получен образец. Многие отчитываемые значения статистики — кумулятивные; отметка времени позволяет рассчитывать скорости и средние значения между любыми двумя отчётами с любой желаемой скоростью отчётов.

type

Строка со значением, которое указывает тип статистики, содержащейся в объекте, например, candidate-pair, inbound-rtp, certificate, и так далее. Типы статистики и соответствующие им объекты перечислены ниже.

Пользователи обычно перебирают RTCStatsReport, используя цикл forEach() или for...of, выбирая нужную статистику с помощью свойства type. После определения определённого объекта статистики с помощью его свойства type, свойство id может быть в дальнейшем использовано с get() для получения того же отчёта о статистике в другое время.

Отметку времени можно использовать для расчёта средних значений для статистики, которая накапливается в течение всего времени жизни соединения.

Типы статистических данных

Ниже приведены значения статистики type и соответствующие словари.

Тип Словарь Описание
candidate-pair RTCIceCandidatePairStats Статистика, описывающая изменение от одного RTCIceTransport к другому, например, во время перезапуска ICE.
certificate RTCCertificateStats Статистика использования сертификата RTCIceTransport.
codec RTCCodecStats Статистика использования определённого кодека для потоков, отправляемых или получаемых по этому соединению.
data-channel RTCDataChannelStats Статистика, связанная с одним RTCDataChannel в соединении.
inbound-rtp RTCInboundRtpStreamStats Статистика состояния одного из входных потоков данных соединения.
local-candidate RTCIceCandidateStats Статистика локального кандидата ICE, связанного с RTCIceTransport соединения.
media-source RTCAudioSourceStats или RTCVideoSourceStats Статистика медиаданных, созданных MediaStreamTrack, присоединённым к отправителю RTP. Словарь, на который ссылается этот ключ, зависит от kind трафика.
outbound-rtp RTCOutboundRtpStreamStats Статистика состояния одного из исходящих потоков данных в этом соединении.
peer-connection RTCPeerConnectionStats Статистика состояния RTCPeerConnection.
remote-candidate RTCIceCandidateStats Статистика удалённого кандидата ICE, связанного с RTCIceTransport соединения.
remote-inbound-rtp RTCRemoteInboundRtpStreamStats Статистика состояния входного потока данных с точки зрения удалённого участника.
remote-outbound-rtp RTCRemoteOutboundRtpStreamStats Статистика состояния исходящего потока данных с точки зрения удалённого участника.
transport RTCTransportStats Статистика используемого транспортом соединения.

Примеры

Итерация отчёта RTCPeerConnection с помощью цикла forEach

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

Учитывая переменную myPeerConnection, являющуюся экземпляром RTCPeerConnection, код использует await для ожидания отчёта о статистике, а затем итерирует его с помощью RTCStatsReport.forEach(). Затем он фильтрует словари, выбирая только те отчёты, у которых type типа inbound-rtp и kind типа video.

const stats = await myPeerConnection.getStats();

stats.forEach((report) => {
  if (report.type === "inbound-rtp" && report.kind === "video") {
    // Log the frame rate
    console.log(report.framesPerSecond);
  }
});

Итерация отчёта RTCRtpSender с помощью цикла for...of

В этом примере показано, как итерировать исходящую статистику от RTCRtpSender.

Код следует аналогичной схеме предыдущему примеру, но итерирует значения RTCStatsReport.values() с помощью цикла for...of и фильтрует по type типа outbound-rtp. Предполагается, что у вас уже есть объект RTCRtpSender с именем «sender».

const stats = await sender.getStats();

for (const stat of stats.values()) {
  if (stat.type != "outbound-rtp") continue;
  Object.keys(stat).forEach((statName) => {
    console.log(`${statName}: ${report[statName]}`);
  });
}

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

Спецификация
WebRTC: Реальное общение в браузерах
# rtcstatsreport-object

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

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android
@@iterator 58 79 48 45 11 58 48 43 11 7.0 58
RTCStatsReport 58 79 27 45 11 58 27 43 11 7.0 58
entries 58 79 48 45 11 58 48 43 11 7.0 58
forEach 58 79 27 45 11 58 27 43 11 7.0 58
get 58 79 27 45 11 58 27 43 11 7.0 58
has 58 79 27 45 11 58 27 43 11 7.0 58
keys 58 79 48 45 11 58 48 43 11 7.0 58
size 59 79 48 46 11 59 48 43 11 7.0 59
type_candidate-pair 58 79 29 45 11 58 29 43 11 7.0 58
type_certificate 80 80 No 67 13.1 80 No 57 13.4 13.0 80
type_codec 80 80 98 67 13.1 80 98 57 13.4 13.0 80
type_data-channel 80 80 79 67 13.1 80 No 57 13.4 13.0 80
type_inbound-rtp 79 79 27 66 11 79 27 57 11 12.0 79
type_local-candidate 80 80 27 67 12.1 80 27 57 12.2 13.0 80
type_media-playout 111 111 No 97 No 111 No 75 No 22.0 111
type_media-source 80 80 113 67 14.1 80 113 57 14.5 13.0 80
type_outbound-rtp 80 80 27 67 11 80 27 57 11 13.0 80
type_peer-connection 80 80 113 67 13.1 80 113 57 13.4 13.0 80
type_remote-candidate 80 80 27 67 12.1 80 27 57 12.2 13.0 80
type_remote-inbound-rtp 80 80 27 67 11 80 27 57 11 13.0 80
type_remote-outbound-rtp 91 91 27 77 11 91 27 64 11 16.0 91
type_transport 80 80 No 67 13.1 80 No 57 13.4 13.0 80
values 58 79 48 45 11 58 48 43 11 7.0 58

См. также

  • WebRTC API
  • RTCPeerConnection
  • RTCPeerConnection.getStats(), RTCRtpReceiver.getStats(), и RTCRtpSender.getStats()

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

Spec-Zone.ru

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