Статистика качества мультимедиа
Чтобы лучше понять качество мультимедиа в VoIP и видеозвонки, которые используют Службы коммуникации Azure, есть функция, называемая статистикой качества мультимедиа. Используйте его для проверки метрик качества качества аудио, видео и общего доступа к экранам для метрик для входящих и исходящих вызовов.
Статистика качества мультимедиа для текущего вызова
Внимание
Существует обновление интерфейса для статистики качества мультимедиа в пакете SDK, начиная с пакета SDK версии 1.20.1
Статистика качества мультимедиа — это расширенная функция основного Call
API. Сначала необходимо получить mediaStatsFeature
объект API:
const mediaStatsFeature = call.feature(Features.MediaStats);
Чтобы получить данные статистики мультимедиа, вы можете подписаться на sampleReported
событие или summaryReported
событие.
Событие sampleReported
активирует каждую секунду. Он подходит в качестве источника данных для отображения пользовательского интерфейса или собственного конвейера данных.
Событие summaryReported
содержит агрегированные значения данных по интервалам, что полезно, если вам просто нужна сводка.
Если требуется контролировать интервал summaryReported
события, необходимо определить mediaStatsCollectorOptions
тип MediaStatsCollectorOptions
. В противном случае пакет SDK использует значения по умолчанию.
const mediaStatsCollectorOptions: SDK.MediaStatsCollectorOptions = {
aggregationInterval: 10,
dataPointsPerAggregation: 6
};
const mediaStatsCollector = mediaStatsFeature.createCollector(mediaStatsSubscriptionOptions);
mediaStatsCollector.on('sampleReported', (sample) => {
console.log('media stats sample', sample);
});
mediaStatsCollector.on('summaryReported', (summary) => {
console.log('media stats summary', summary);
});
Если вам не нужно использовать сборщик статистики мультимедиа, можно вызвать dispose
метод mediaStatsCollector
.
mediaStatsCollector.dispose();
Метод вызова mediaStatsCollector
не требуется dispose
вызывать каждый раз, когда вызов заканчивается, так как сборщики удаляются внутренне при завершении вызова.
MediaStatsCollectorOptions
Необязательный MediaStatsCollectorOptions
, и в нем есть два необязательных поля MediaStatsCollectorOptions
.
aggregationInterval
— это интервал в секундах, в которых статистические данные агрегируются. Значение по умолчанию — 10.dataPointsPerAggregation
определяет, сколько точек данных имеет каждое событие агрегирования. По умолчанию используется значение 6.
Эти два значения определяют частоту, с которой пакет SDK выдает summaryReported
событие и количество агрегированных точек данных, включенных в отчет.
Событие вызывается каждые summaryReported
aggregationInterval * dataPointsPerAggregation
секунды.
Например, если задать следующие значения:
aggregationInterval
= 1dataPointsPerAggregation
= 60
Событие summaryReported
создается каждые 60 секунд и содержит 60 уникальных единиц для каждой статистики, записанной.
Если задать следующие значения:
aggregatinInterval
= 60dataPointsPerAggregation
= 1
Событие summaryReported
создается каждые 60 секунд и содержит одну уникальную единицу (1) для каждой статистики, записанной.
Рекомендации
Если вы хотите собрать данные для автономной проверки, рекомендуется собирать данные и отправлять их в прием конвейера после завершения вызова. Если данные передаются во время вызова, это может использовать пропускную способность Интернета, необходимую для продолжения вызова Службы коммуникации Azure (особенно при низкой пропускной способности).
В любом sampleReported
случае summaryReported
данные статистики мультимедиа — это не простое сопоставление значений ключа.
Ниже приведено объявление типа данных события, сообщаемых событием sampleReported
.
export interface MediaStatsReportSample {
audio: {
send: OutgoingAudioMediaStats<number, string>[];
receive: IncomingAudioMediaStats<number, string>[];
};
video: {
send: OutgoingVideoMediaStats<number, string>[];
receive: IncomingVideoMediaStats<number, string>[];
};
screenShare: {
send: OutgoingScreenShareMediaStats<number, string>[];
receive: IncomingScreenShareMediaStats<number, string>[];
};
transports: TransportMediaStats<number>[];
}
Данные события предоставляют статистические данные для каждого потока мультимедиа в вызове, включая направления отправки и получения.
Мы рекомендуем распечатать событие, используя console.log
его макет и изменения значений, чтобы найти правильный способ отображения или обработки данных в соответствии с вашим сценарием использования.
Метрики отправки звука
Имя метрики | Description | Комментарии |
---|---|---|
id |
Идентификатор статистики | Используется для идентификации статистики по событиям, особенно при наличии нескольких статистических данных с одинаковым типом носителя и направлением в событии. |
codecName |
Имя кодека | OPUS, G722. |
bitrate |
Скорость передачи звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
jitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
packets |
Общее количество отправленных пакетов. | |
packetsPerSecond |
Частота пакетов (пакеты в секунду) | |
packetsLost |
Общее количество пакетов, потерянных из удаленного конца. | |
packetsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
rttInMs |
Время круговой поездки (миллисекунда) | Чем меньше это значение, тем лучше. Вычисляется из отчета приемника RTCP. Рекомендуется использовать время круговой поездки в 200 мс или меньше. |
audioInputLevel |
Уровень громкости звука с микрофона | Значение диапазонов от 0 до 65536. Значение 0 представляет тишину. |
transportId |
Идентификатор транспорта | Используется для связывания статистики в транспорте. |
Метрики приема звука
В версиях пакета SDK, предшествующих версии 1.20.1, jitterBufferDelayInMs
существовал как jitterBufferInMs
.
Имя метрики | Description | Комментарии |
---|---|---|
id |
Идентификатор статистики | Используется для идентификации статистики по событиям, особенно при наличии нескольких статистических данных с одинаковым типом носителя и направлением в событии. |
codecName |
Имя кодека | OPUS, G722. |
bitrate |
Скорость приема звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
jitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
packets |
Общее количество полученных пакетов. | |
packetsPerSecond |
Частота пакетов (пакеты в секунду) | |
packetsLost |
Общее количество потерянных пакетов. | |
packetsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
jitterBufferDelayInMs |
Буфер Jitter (миллисекунда) | Чем меньше это значение, тем лучше. Буфер jitter используется для плавного воспроизведения. Это значение заключается в том, как долго пакеты примеров остаются в буфере jitter. |
audioOutputLevel |
Уровень громкости звука из принимающего потока | Значение диапазонов от 0 до 65536. Значение 0 представляет тишину. |
healedRatio |
Соотношение скрытых образцов (за исключением silentConcealedSamples ) к общему получению образцов |
Только сведения. |
transportId |
Идентификатор транспорта | Используется для связывания статистики в транспорте. |
Метрики отправки видео
Начиная с пакета SDK версии 1.20.1, метрики отправки видео включали altLayouts
поле метрик, что позволяет лучше представлять статистику потоков симуляции.
Имя метрики | Description | Комментарии |
---|---|---|
id |
Идентификатор статистики | Используется для идентификации статистики по событиям, особенно при наличии нескольких статистических данных с одинаковым типом носителя и направлением в событии. |
codecName |
Имя кодека | H264, VP8, VP9. |
bitrate |
Скорость передачи видео (биты в секунду) | |
jitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
packets |
Общее количество отправленных пакетов. | |
packetsPerSecond |
Частота пакетов (пакеты в секунду) | |
packetsLost |
Общее количество пакетов, потерянных из удаленного конца. | |
packetsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
rttInMs |
Время круговой поездки (миллисекунда) | Чем меньше это значение, тем лучше. Вычисляется из отчета приемника RTCP. Рекомендуется использовать время круговой поездки в 200 мс или меньше. |
frameRateInput |
Частота кадров, исходная из источника видео (кадры в секунду) | |
frameWidthInput |
Ширина кадра последнего кадра, полученного из источника видео (пикселей) | |
frameHeightInput |
Высота кадра последнего кадра, полученного из источника видео (пикселей) | |
framesEncoded |
Количество кадров, успешно закодированных для потока RTP. | |
frameRateEncoded |
Частота кадров успешно закодирована для потока RTP (кадры в секунду) | |
framesSent |
Количество кадров, отправленных в поток RTP | |
frameRateSent |
Частота кадров, отправляемая в поток RTP (кадры в секунду) | |
frameWidthSent |
Ширина кадра в кодировке (пиксель) | |
frameHeightSent |
Высота кадра в кодировке (пиксель) | |
keyFramesEncoded |
Ключевые кадры успешно закодированы для потока RTP | |
transportId |
Идентификатор транспорта | Используется для связывания статистики в транспорте. |
altLayouts |
Потоки Simulcast | altLayouts содержит те же метрики для отправки видео |
Метрики получения видео
В версиях пакета SDK, предшествующих версии 1.20.1, jitterBufferDelayInMs
существовал как jitterBufferInMs
.
Имя метрики | Description | Комментарии |
---|---|---|
id |
Идентификатор статистики | Используется для идентификации статистики по событиям, особенно при наличии нескольких статистических данных с одинаковым типом носителя и направлением в событии. |
codecName |
Имя кодека | H264, VP8, VP9. |
bitrate |
Скорость получения видео (биты в секунду) | |
jitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
packets |
Общее количество полученных пакетов. | |
packetsPerSecond |
Частота пакетов (пакеты в секунду) | |
packetsLost |
Общее количество потерянных пакетов. | |
packetsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
rttInMs |
Время круговой поездки (миллисекунда) | Чем меньше это значение, тем лучше. Вычисляется из отчета отправителя RTCP. Рекомендуется использовать время круговой поездки в 200 мс или меньше. |
streamId |
Идентификатор потока | Значение streamId соответствует id в VideoStreamCommon . Его можно использовать для сопоставления отправителя. |
jitterBufferDelayInMs |
Буфер Jitter (миллисекунда) | Чем меньше это значение, тем лучше. Буфер jitter используется для плавного воспроизведения. Это значение определяет, как долго пакеты кадров остаются в буфере jitter. |
frameRateDecoded |
Скорость кадров правильно декодирована для потока RTP (кадры в секунду) | |
frameRateReceived |
Частота кадров, полученная в потоке RTP (кадры в секунду) | |
frameWidthReceived |
Ширина кадра декодированного кадра (пиксель) | |
frameHeightReceived |
Высота кадра декодированного кадра (пиксель) | |
longestFreezeDurationInMs |
Самая длинная длительность замораживания (миллисекунда) | |
totalFreezeDurationInMs |
Общая длительность замораживания (миллисекунда) | |
framesReceived |
Общее количество кадров, полученных в потоке RTP | |
framesDecoded |
Общее количество кадров, правильно декодированных для потока RTP | |
framesDropped |
Общее количество удаленных кадров | |
keyFramesDecoded |
Общее количество ключевых кадров, правильно декодированных для потока RTP | |
transportId |
Идентификатор транспорта | Используется для связывания статистики в транспорте. |
Метрики отправки общего доступа к экрану
В настоящее время поля статистики совпадают с метриками отправки видео.
Метрики получения общего доступа к экрану
В настоящее время поля статистики совпадают с метриками получения видео.
Метрики транспорта
Связанные с транспортом метрики были разделены после пакета SDK для ACS Web SDK 1.20.1.
В более ранних версиях существовали как pairRttInMs
в статистике rttInMs
аудио, видео и экранной общей папки.
availableIncomingBitrate
был availableBitrate
в статистике получения аудио, видео и screenShare.
availableOutgoingBitrate
был availableBitrate
в статистике отправки аудио, видео и screenShare.
Имя метрики | Description | Комментарии |
---|---|---|
id |
Идентификатор транспорта | Используется для связывания с transportId в других статистиках |
rttInMs |
Время круговой поездки (миллисекунда) | Значение вычисляется из проверки подключения STUN. Рекомендуется использовать время круговой поездки в 200 мс или меньше. |
availableIncomingBitrate |
Оценка пропускной способности (биты в секунду) | Значение может быть недоступно в зависимости от алгоритма оценки пропускной способности, используемого в сеансе WebRTC |
availableOutgoingBitrate |
Оценка пропускной способности (биты в секунду) | Значение может быть недоступно в зависимости от алгоритма оценки пропускной способности, используемого в сеансе WebRTC |
Что изменилось в пакете SDK версии 1.20.1 (GA)
Теперь мы поддерживаем API функций MediaStats в версии 1.20.1 (GA).
По сравнению с предыдущими бета-версиями, мы также внесли некоторые незначительные изменения в интерфейс API в этой версии общедоступной версии.
В предыдущих бета-версиях были pairRttInMs
availableBitrate
включены в статистику аудио, видео и screenShare. Теперь эти метрики разделены на метрики транспорта.
Мы представили packets
и packetsLost
метрики в аудио, видео, статистике screenShare. Эти метрики полезны для вычисления общего количества пакетов, отправленных или полученных между двумя разными точками времени.
Статистика frameRateOutput
видео и экранной общей папки удаляется. Вместо этого можно использовать frameRateDecoded
.
Поле jitterBufferInMs
метрик переименовывается jitterBufferDelayInMs
для предоставления более четкого описания, так как эта метрика указывает длительность пребывания пакета в буфере jitter.
Статистика качества мультимедиа для текущего вызова
Статистика качества мультимедиа — это расширенная функция основного Call
API. Сначала необходимо получить MediaStatisticsCallFeature
объект API:
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.feature(Features.MEDIA_STATISTICS);
Объект MediaStatisticsCallFeature
имеет следующую структуру API:
- Событие
OnReportReceivedListener
прослушивает периодические отчеты статистики мультимедиа. getReportIntervalInSeconds
получает интервал (в секундах) создания отчета статистики мультимедиа. Пакет SDK использует10
второе значение по умолчанию.updateReportIntervalInSeconds()
обновляет интервал (в секундах) создания отчета статистики мультимедиа. Пакет SDK использует10
второе значение по умолчанию.- Содержит
MediaStatisticsReport
определение исходящей и входящей статистики мультимедиа, классифицируется по аудио, видео и общей папке с экрана.getOutgoingStatistics()
: список статистики мультимедиа для исходящего носителя.getAudioStatistics()
: список статистики мультимедиа для исходящего звука.getVideoStatistics()
: список статистики мультимедиа для исходящего видео.getScreenShareStatistics()
: список статистики мультимедиа для исходящего общего доступа к экрану.getDataChannelStatistics()
: список статистики мультимедиа для канала данных.
getIncomingStatistics()
: список статистики мультимедиа для входящих носителей.getAudioStatistics()
: список статистики мультимедиа для входящих звуковых данных.getVideoStatistics()
: список статистики мультимедиа для входящего видео.getScreenShareStatistics()
: список статистики мультимедиа для входящего общего доступа к экрану.getDataChannelStatistics()
: список статистики мультимедиа для канала данных.
getLastUpdatedAt()
: дата создания отчета.
Затем подпишитесь на addOnReportReceivedListener
событие, чтобы получить регулярные обновления о текущей статистике качества мультимедиа:
mediaStatisticsCallFeature.addOnReportReceivedListener(handleReportReceivedListener);
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportIntervalInSeconds(15);
private void handleReportReceivedListener(MediaStatisticssReportEvent args) {
// Obtain the media statistics report instance
MediaStatisticsReport report = args.getReport();
// Obtain the outgoing media statistics for audio
List<OutgoingAudioStatistics> outgoingAudioStatistics = report.getOutgoingStatistics().getAudioStatistics();
// Obtain the outgoing media statistics for video
List<OutgoingVideoStatistics> outgoingVideoStatistics = report.getOutgoingStatistics().getVideoStatistics();
// Obtain the outgoing media statistics for screen share
List<OutgoingScreenShareStatistics> outgoingScreenShareStatistics = report.getOutgoingStatistics().getScreenShareStatistics();
// Obtain the outgoing media statistics for data channel
List<OutgoingDataChannelStatistics> outgoingDataChannelStatistics = report.getOutgoingStatistics().getDataChannelStatistics();
// Obtain the incoming media statistics for audio
List<IncomingAudioStatistics> incomingAudioStatistics = report.getIncomingStatistics().getAudioStatistics();
// Obtain the incoming media statistics for video
List<IncomingVideoStatistics> incomingVideoStatistics = report.getIncomingStatistics().getVideoStatistics();
// Obtain the incoming media statistics for screen share
List<IncomingScreenShareStatistics> incomingScreenShareStatistics = report.getIncomingStatistics().getScreenShareStatistics();
// Obtain the incoming media statistics for data channel
List<IncomingDataChannelStatistics> incomingDataChannelStatistics = report.getIncomingStatistics().getDataChannelStatistics();
}
Рекомендации
Если вы хотите собрать данные для автономной проверки, рекомендуется собирать данные и отправлять их в прием конвейера после завершения вызова. Если данные передаются во время вызова, это может использовать пропускную способность Интернета, необходимую для продолжения вызова Службы коммуникации Azure (особенно при низкой пропускной способности).
Исходящие звуковые метрики
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |
Входящие звуковые метрики
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
Исходящие метрики видео
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи видео (биты в секунду) | |
PacketCount |
Общее количество отправленных пакетов. | |
FrameRate |
Частота кадров, отправляемая в поток RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра в кодировке (пиксели) | |
FrameHeight |
Высота кадра в кодировке (пиксели) |
Метрики входящего видео
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость получения видео (биты в секунду) | |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
StreamId |
Идентификатор потока | Значение streamId соответствует идентификатору видео удаленного участника. Его можно использовать для сопоставления отправителя. |
FrameRate |
Частота кадров, полученная в потоке RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра декодированного кадра (пиксели) | |
FrameHeight |
Высота кадра декодированного кадра (пиксели) | |
TotalFreezeDurationInMs |
Общая длительность замораживания (миллисекунда) |
Метрики общего доступа к исходящему экрану
В настоящее время поля статистики совпадают с метриками исходящего видео.
Метрики общего доступа для входящих экранов
В настоящее время поля статистики совпадают с метриками входящего видео.
Метрики исходящего канала данных
Имя метрики | Description | Комментарии |
---|---|---|
PacketCount |
Общее количество отправленных пакетов. |
Метрики канала входящих данных
Имя метрики | Description | Комментарии |
---|---|---|
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |
Статистика качества мультимедиа для текущего вызова
Статистика качества мультимедиа — это расширенная функция основного Call
API. Сначала необходимо получить mediaStatisticsCallFeature
объект API:
var mediaStatisticsCallFeature = self.call.feature(Features.mediaStatistics)
Объект mediaStatisticsCallFeature
имеет следующую структуру API:
- Метод
didReceiveReport
делегата прослушивает периодические отчеты статистики мультимедиа. reportIntervalInSeconds
получает интервал (в секундах) создания отчета статистики мультимедиа. Пакет SDK использует10
второе значение по умолчанию.updateReportInterval(inSeconds)
обновляет интервал (в секундах) создания отчета статистики мультимедиа. Пакет SDK использует10
второе значение по умолчанию.- Объект
MediaStatisticsReport
содержит определение исходящей и входящей статистики мультимедиа, классифицируется по аудио, видео и общей папке с экрана.outgoingMediaStatistics
: список статистики мультимедиа для исходящего носителя.audio
: список статистики мультимедиа для исходящего звука.video
: список статистики мультимедиа для исходящего видео.screenShare
: список статистики мультимедиа для исходящей общей папки с экрана.dataChannel
: список статистики мультимедиа для исходящего канала данных.
incomingMediaStatistics
: список статистики мультимедиа для входящих носителей.audio
: список статистики мультимедиа для входящего звука.video
: список статистики мультимедиа для входящего видео.screenShare
: список статистики мультимедиа для входящего общего ресурса экрана.dataChannel
: список статистики мультимедиа для входящего канала данных.
lastUpdated
: дата создания отчета.
Затем реализуйте didReceiveReport
делегат, чтобы получить регулярные обновления о текущей статистике качества мультимедиа:
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportInterval(inSeconds: 15)
mediaStatisticsCallFeature.delegate = MediaStatisticsDelegate()
public class MediaStatisticsDelegate : MediaStatisticsCallFeatureDelegate
{
public func mediaStatisticsCallFeature(_ mediaStatisticsCallFeature: MediaStatisticsCallFeature,
didReceiveReport args: MediaStatisticsReportReceivedEventArgs) {
let report = args.report
// Obtain the outgoing media statistics for audio
let outgoingAudioStatistics = report.outgoingStatistics.audio
// Obtain the outgoing media statistics for video
let outgoingVideoStatistics = report.outgoingStatistics.video
// Obtain the outgoing media statistics for screen share
let outgoingScreenShareStatistics = report.outgoingStatistics.screenShare
// Obtain the outgoing media statistics for data channel
let outgoingDataChannelStatistics = report.outgoingStatistics.dataChannel
// Obtain the incoming media statistics for audio
let incomingAudioStatistics = report.incomingStatistics.audio
// Obtain the incoming media statistics for video
let incomingVideoStatistics = report.incomingStatistics.video
// Obtain the incoming media statistics for screen share
let incomingScreenShareStatistics = report.incomingStatistics.screenShare
// Obtain the incoming media statistics for data channel
let incomingDataChannelStatistics = report.incomingStatistics.dataChannel
}
}
Рекомендации
Если вы хотите собрать данные для автономной проверки, рекомендуется собирать данные и отправлять их в прием конвейера после завершения вызова. Если данные передаются во время вызова, это может использовать пропускную способность Интернета, необходимую для продолжения вызова Службы коммуникации Azure (особенно при низкой пропускной способности).
Исходящие звуковые метрики
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |
Входящие звуковые метрики
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
Исходящие метрики видео
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи видео (биты в секунду) | |
PacketCount |
Общее количество отправленных пакетов. | |
FrameRate |
Частота кадров, отправляемая в поток RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра в кодировке (пиксели) | |
FrameHeight |
Высота кадра в кодировке (пиксели) |
Метрики входящего видео
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость получения видео (биты в секунду) | |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
StreamId |
Идентификатор потока | Значение streamId соответствует идентификатору видео удаленного участника. Его можно использовать для сопоставления отправителя. |
FrameRate |
Частота кадров, полученная в потоке RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра декодированного кадра (пиксели) | |
FrameHeight |
Высота кадра декодированного кадра (пиксели) | |
TotalFreezeDurationInMs |
Общая длительность замораживания (миллисекунда) |
Метрики общего доступа к исходящему экрану
В настоящее время поля статистики совпадают с метриками исходящего видео.
Метрики общего доступа для входящих экранов
В настоящее время поля статистики совпадают с метриками входящего видео.
Метрики исходящего канала данных
Имя метрики | Description | Комментарии |
---|---|---|
PacketCount |
Общее количество отправленных пакетов. |
Метрики канала входящих данных
Имя метрики | Description | Комментарии |
---|---|---|
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |
Статистика качества мультимедиа для текущего вызова
Статистика качества мультимедиа — это расширенная функция основного CommunicationCall
API. Сначала необходимо получить MediaStatisticsCallFeature
объект API:
MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;
Объект MediaStatisticsCallFeature
компонента имеет следующую структуру API:
- Событие
ReportReceived
прослушивает периодические отчеты статистики мультимедиа. ReportIntervalInSeconds
получает интервал (в секундах) создания отчета статистики мультимедиа. Пакет SDK использует10
второе значение по умолчанию.UpdateReportIntervalInSeconds()
обновляет интервал (в секундах) создания отчета статистики мультимедиа. Пакет SDK использует10
второе значение по умолчанию.- Объект
MediaStatisticsReport
содержит определение исходящей и входящей статистики мультимедиа, классифицируется по аудио, видео и общей папке с экрана.OutgoingMediaStatistics
: список статистики мультимедиа для исходящего носителя.Audio
: список статистики мультимедиа для исходящего звука.Video
: список статистики мультимедиа для исходящего видео.ScreenShare
: список статистики мультимедиа для исходящей общей папки с экрана.DataChannel
: список статистики мультимедиа для исходящего канала данных.
IncomingMediaStatistics
: список статистики мультимедиа для входящих носителей.Audio
: список статистики мультимедиа для входящего звука.Video
: список статистики мультимедиа для входящего видео.ScreenShare
: список статистики мультимедиа для входящего общего ресурса экрана.DataChannel
: список статистики мультимедиа для входящего канала данных.
LastUpdateAt
: дата создания отчета.
Затем подпишитесь на SampleReported
событие, чтобы получить регулярные обновления о текущей статистике качества мультимедиа:
mediaStatisticsCallFeature.ReportReceived += MediaStatisticsCallFeature_ReportReceived;
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.UpdateReportIntervalInSeconds(15);
private void MediaStatisticsCallFeature_ReportReceived(object sender, MediaStatisticsReportReceivedEventArgs args)
// Obtain the media statistics report instance
MediaStatisticsReport report = args.Report;
// Obtain the outgoing media statistics for audio
IReadOnlyList<OutgoingAudioStatistics> outgoingAudioStatistics = report.OutgoingStatistics.Audio;
// Obtain the outgoing media statistics for video
IReadOnlyList<OutgoingVideoStatistics> outgoingVideoStatistics = report.OutgoingStatistics.Video;
// Obtain the outgoing media statistics for screen share
IReadOnlyList<OutgoingScreenShareStatistics> outgoingScreenShareStatistics = report.OutgoingStatistics.ScreenShare;
// Obtain the outgoing media statistics for data channel
IReadOnlyList<OutgoingDataChannelStatistics> outgoingDataChannelStatistics = report.OutgoingStatistics.DataChannel;
// Obtain the incoming media statistics for audio
IReadOnlyList<IncomingAudioStatistics> incomingAudioStatistics = report.IncomingStatistics.Audio;
// Obtain the incoming media statistics for video
IReadOnlyList<IncomingVideoStatistics> incomingVideoStatistics = report.IncomingStatistics.Video;
// Obtain the incoming media statistics for screen share
IReadOnlyList<IncomingScreenShareStatistics> incomingScreenShareStatistics = report.IncomingStatistics.ScreenShare;
// Obtain the incoming media statistics for data channel
IReadOnlyList<IncomingDataChannelStatistics> incomingDataChannelStatistics = report.IncomingStatistics.DataChannel;
}
Рекомендации
Если вы хотите собрать данные для автономной проверки, рекомендуется собирать данные и отправлять их в прием конвейера после завершения вызова. Если данные передаются во время вызова, это может использовать пропускную способность Интернета, необходимую для продолжения вызова Службы коммуникации Azure (особенно при низкой пропускной способности).
Исходящие звуковые метрики
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |
Входящие звуковые метрики
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
Исходящие метрики видео
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи видео (биты в секунду) | |
PacketCount |
Общее количество отправленных пакетов. | |
FrameRate |
Частота кадров, отправляемая в поток RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра в кодировке (пиксели) | |
FrameHeight |
Высота кадра в кодировке (пиксели) |
Метрики входящего видео
Имя метрики | Description | Комментарии |
---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость получения видео (биты в секунду) | |
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
StreamId |
Идентификатор потока | Значение streamId соответствует идентификатору видео удаленного участника. Его можно использовать для сопоставления отправителя. |
FrameRate |
Частота кадров, полученная в потоке RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра декодированного кадра (пиксели) | |
FrameHeight |
Высота кадра декодированного кадра (пиксели) | |
TotalFreezeDurationInMs |
Общая длительность замораживания (миллисекунда) |
Метрики общего доступа к исходящему экрану
В настоящее время поля статистики совпадают с метриками исходящего видео.
Метрики общего доступа для входящих экранов
В настоящее время поля статистики совпадают с метриками входящего видео.
Метрики исходящего канала данных
Имя метрики | Description | Комментарии |
---|---|---|
PacketCount |
Общее количество отправленных пакетов. |
Метрики канала входящих данных
Имя метрики | Description | Комментарии |
---|---|---|
JitterInMs |
Jitter пакетов (миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |