Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы лучше понять качество мультимедиа в 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);
});
Если вам не нужно использовать сборщик статистики мультимедиа, вы можете вызвать метод disposemediaStatsCollector.
mediaStatsCollector.dispose();
Вам не нужно вызывать метод dispose из mediaStatsCollector каждый раз, когда вызов заканчивается, так как сборщики удаляются внутренним образом при завершении вызова.
MediaStatsCollectorOptions
MediaStatsCollectorOptions является необязательным, и в MediaStatsCollectorOptions есть два необязательных поля.
-
aggregationInterval— это интервал в секундах, в которых статистические данные агрегируются. Значение по умолчанию — 10. -
dataPointsPerAggregationопределяет, сколько точек данных имеет каждое событие агрегирования. По умолчанию используется значение 6.
Эти два значения определяют частоту, с которой пакет SDK выдает summaryReported событие и количество агрегированных точек данных, включенных в отчет.
Событие вызывается каждые summaryReportedaggregationInterval * dataPointsPerAggregation секунды.
Например, если задать следующие значения:
-
aggregationInterval= 1 -
dataPointsPerAggregation= 60
Событие summaryReported инициируется каждые 60 секунд и содержит 60 уникальных единиц для каждой записанной статистики.
Если задать следующие значения:
-
aggregatinInterval= 60 -
dataPointsPerAggregation= 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, чтобы наблюдать за его макетом и изменениями значений. Это позволит вам найти правильный способ отображения или обработки данных в зависимости от вашего сценария использования.
Метрики отправки звука
| Имя метрики | Описание | Комментарии |
|---|---|---|
id |
Идентификатор статистики | Используется для идентификации статистики по событиям, особенно при наличии нескольких статистических данных с одинаковым типом носителя и направлением в событии. |
codecName |
Имя кодека | OPUS, G722. |
bitrate |
Скорость передачи звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
jitterInMs |
Джиттер пакетов (миллисекунды) | Чем меньше это значение, тем лучше. |
packets |
Общее количество отправленных пакетов. | |
packetsPerSecond |
Частота пакетов (пакеты в секунду) | |
packetsLost |
Общее количество пакетов, потерянных из удаленного конца. | |
packetsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
rttInMs |
Время круговой поездки (миллисекунда) | Чем меньше это значение, тем лучше. Вычисляется из отчета приемника RTCP. Рекомендуется использовать время круговой поездки в 200 мс или меньше. |
audioInputLevel |
Уровень громкости звука с микрофона | Диапазон значений от 0 до 65536. Значение 0 представляет тишину. |
transportId |
Идентификатор транспорта | Используется для связывания статистики в транспорте. |
Метрики приема звука
В версиях пакета SDK, предшествующих версии 1.20.1, jitterBufferDelayInMs существовал как jitterBufferInMs.
| Имя метрики | Описание | Комментарии |
|---|---|---|
id |
Идентификатор статистики | Используется для идентификации статистики по событиям, особенно при наличии нескольких статистических данных с одинаковым типом носителя и направлением в событии. |
codecName |
Имя кодека | OPUS, G722. |
bitrate |
Скорость приема звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
jitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
packets |
Общее количество полученных пакетов. | |
packetsPerSecond |
Частота пакетов (пакеты в секунду) | |
packetsLost |
Общее количество потерянных пакетов. | |
packetsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
jitterBufferDelayInMs |
Буфер джиттера (миллисекунды) | Чем меньше это значение, тем лучше. Буфер джиттера используется для плавного воспроизведения звука или видео. Это значение указывает, как долго пакеты образцов остаются в буфере джиттера. |
audioOutputLevel |
Уровень громкости звука из принимающего потока | Значение варьируется от 0 до 65536. Значение 0 представляет тишину. |
healedRatio |
Соотношение скрытых образцов (за исключением silentConcealedSamples) к общему получению образцов |
Только сведения. |
transportId |
Идентификатор транспорта | Используется для связывания статистики в транспорте. |
Метрики отправки видео
Начиная с пакета SDK версии 1.20.1, метрики отправки видео включали altLayouts поле метрик, что позволяет лучше представлять статистику потоков симуляции.
| Имя метрики | Описание | Комментарии |
|---|---|---|
id |
Идентификатор статистики | Используется для идентификации статистики по событиям, особенно при наличии нескольких статистических данных с одинаковым типом носителя и направлением в событии. |
codecName |
Имя кодека | H264, VP8, VP9. |
bitrate |
Скорость передачи видео (биты в секунду) | |
jitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
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.
| Имя метрики | Описание | Комментарии |
|---|---|---|
id |
Идентификатор статистики | Используется для идентификации статистики по событиям, особенно при наличии нескольких статистических данных с одинаковым типом носителя и направлением в событии. |
codecName |
Имя кодека | H264, VP8, VP9. |
bitrate |
Скорость получения видео (биты в секунду) | |
jitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
packets |
Общее количество полученных пакетов. | |
packetsPerSecond |
Частота пакетов (пакеты в секунду) | |
packetsLost |
Общее количество потерянных пакетов. | |
packetsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
rttInMs |
Время круговой поездки (миллисекунда) | Чем меньше это значение, тем лучше. Вычисляется из отчета отправителя RTCP. Рекомендуется использовать время круговой поездки в 200 мс или меньше. |
streamId |
Идентификатор потока | Значение streamId соответствует id в VideoStreamCommon. Его можно использовать для сопоставления отправителя. |
jitterBufferDelayInMs |
Буфер джиттера (миллисекунды) | Чем меньше это значение, тем лучше. Буфер джиттера используется для плавного воспроизведения звука или видео. Это значение указывает, как долго пакеты кадров остаются в джиттер-буфере. |
frameRateDecoded |
Частота кадров правильно декодирована для потока RTP (кадры в секунду) | |
frameRateReceived |
Частота кадров, полученная в потоке RTP (кадры в секунду) | |
frameWidthReceived |
Ширина кадра декодированного кадра (пиксель) | |
frameHeightReceived |
Высота декодированного кадра (пиксели) | |
longestFreezeDurationInMs |
Самая длинная длительность замораживания (миллисекунда) | |
totalFreezeDurationInMs |
Общая длительность замораживания (миллисекунда) | |
framesReceived |
Общее количество кадров, полученных в потоке RTP | |
framesDecoded |
Общее количество кадров, правильно декодированных для потока RTP | |
framesDropped |
Общее количество пропущенных кадров | |
keyFramesDecoded |
Общее количество ключевых кадров, правильно декодированных для потока RTP | |
transportId |
Идентификатор транспорта | Используется для связывания статистики в транспорте. |
Метрики отправки общего доступа к экрану
В настоящее время поля статистики совпадают с метриками отправки видео.
Метрики получения данных о совместном использовании экрана
В настоящее время поля статистики совпадают с метриками получения видео.
Метрики транспорта
Метрики, связанные с транспортом, были выделены из версии ACS Web SDK 1.20.1.
В более ранних версиях rttInMs существовал как pairRttInMs в статистике для аудио, видео и совместного использования экрана.
availableIncomingBitrate был availableBitrate в статистике получения аудио, видео и screenShare.
availableOutgoingBitrate был availableBitrate в статистике отправки аудио, видео и screenShare.
| Имя метрики | Описание | Комментарии |
|---|---|---|
id |
Идентификатор транспорта | Используется для связывания с transportId в других статистиках |
rttInMs |
Время круговой поездки (миллисекунда) | Значение вычисляется из проверки подключения STUN. Рекомендуется использовать время круговой поездки в 200 мс или меньше. |
availableIncomingBitrate |
Оценка пропускной способности (биты в секунду) | Значение может быть недоступно в зависимости от алгоритма оценки пропускной способности, используемого в сеансе WebRTC |
availableOutgoingBitrate |
Оценка пропускной способности (биты в секунду) | Значение может быть недоступно в зависимости от алгоритма оценки пропускной способности, используемого в сеансе WebRTC |
Что изменилось в пакете SDK версии 1.20.1 (GA)
Теперь мы поддерживаем API функций MediaStats в версии 1.20.1 (GA).
По сравнению с предыдущими бета-версиями, мы также внесли некоторые незначительные изменения в интерфейс API в этой версии общедоступной версии.
В предыдущих бета-версиях pairRttInMs, availableBitrate были включены в статистику аудио, видео и доли экрана. Теперь эти метрики разделены на метрики транспорта.
Мы представили 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(MediaStatisticsReportEvent 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 (особенно при низкой пропускной способности).
Исходящие аудио метрики
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |
Входящие звуковые метрики
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
Исходящие метрики видео
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи видео (биты в секунду) | |
PacketCount |
Общее количество отправленных пакетов. | |
FrameRate |
Частота кадров, отправляемая в поток RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра в кодировке (пиксели) | |
FrameHeight |
Высота кадра в кодировке (пиксели) |
Метрики входящего видео
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость получения видео (биты в секунду) | |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
StreamId |
Идентификатор потока | Значение streamId соответствует идентификатору видео удаленного участника. Его можно использовать для сопоставления отправителя. |
FrameRate |
Частота кадров, полученная в потоке RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра декодированного кадра (пиксели) | |
FrameHeight |
Высота кадра декодированного кадра (пиксели) | |
TotalFreezeDurationInMs |
Общая длительность замораживания (миллисекунда) |
Метрики общего доступа к исходящему экрану
В настоящее время поля статистики совпадают с метриками исходящего видео.
Метрики общего доступа для входящих экранов
В настоящее время поля статистики совпадают с метриками входящего видео.
Метрики исходящего канала данных
| Имя метрики | Описание | Комментарии |
|---|---|---|
PacketCount |
Общее количество отправленных пакетов. |
Метрики канала входящих данных
| Имя метрики | Описание | Комментарии |
|---|---|---|
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
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 (особенно при низкой пропускной способности).
Исходящие аудио метрики
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |
Входящие звуковые метрики
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
Исходящие метрики видео
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи видео (биты в секунду) | |
PacketCount |
Общее количество отправленных пакетов. | |
FrameRate |
Частота кадров, отправляемая в поток RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра в кодировке (пиксели) | |
FrameHeight |
Высота кадра в кодировке (пиксели) |
Метрики входящего видео
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость получения видео (биты в секунду) | |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
StreamId |
Идентификатор потока | Значение streamId соответствует идентификатору видео удаленного участника. Его можно использовать для сопоставления отправителя. |
FrameRate |
Частота кадров, полученная в потоке RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра декодированного кадра (пиксели) | |
FrameHeight |
Высота кадра декодированного кадра (пиксели) | |
TotalFreezeDurationInMs |
Общая длительность замораживания (миллисекунда) |
Метрики общего доступа к исходящему экрану
В настоящее время поля статистики совпадают с метриками исходящего видео.
Метрики общего доступа для входящих экранов
В настоящее время поля статистики совпадают с метриками входящего видео.
Метрики исходящего канала данных
| Имя метрики | Описание | Комментарии |
|---|---|---|
PacketCount |
Общее количество отправленных пакетов. |
Метрики канала входящих данных
| Имя метрики | Описание | Комментарии |
|---|---|---|
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
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 (особенно при низкой пропускной способности).
Исходящие аудио метрики
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи звука (биты в секунду) | Общие значения находятся в диапазоне 24 кб/с (36–128 кб/с обычно). |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |
Входящие звуковые метрики
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
Исходящие метрики видео
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость передачи видео (биты в секунду) | |
PacketCount |
Общее количество отправленных пакетов. | |
FrameRate |
Частота кадров, отправляемая в поток RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра в кодировке (пиксели) | |
FrameHeight |
Высота кадра в кодировке (пиксели) |
Метрики входящего видео
| Имя метрики | Описание | Комментарии |
|---|---|---|
CodecName |
Имя кодека | |
BitrateInBps |
Скорость получения видео (биты в секунду) | |
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. | |
PacketsLostPerSecond |
Скорость потери пакетов (пакеты в секунду) | Чем меньше это значение, тем лучше. |
StreamId |
Идентификатор потока | Значение streamId соответствует идентификатору видео удаленного участника. Его можно использовать для сопоставления отправителя. |
FrameRate |
Частота кадров, полученная в потоке RTP (кадры в секунду) | |
FrameWidth |
Ширина кадра декодированного кадра (пиксели) | |
FrameHeight |
Высота кадра декодированного кадра (пиксели) | |
TotalFreezeDurationInMs |
Общая длительность замораживания (миллисекунда) |
Метрики общего доступа к исходящему экрану
В настоящее время поля статистики совпадают с метриками исходящего видео.
Метрики общего доступа для входящих экранов
В настоящее время поля статистики совпадают с метриками входящего видео.
Метрики исходящего канала данных
| Имя метрики | Описание | Комментарии |
|---|---|---|
PacketCount |
Общее количество отправленных пакетов. |
Метрики канала входящих данных
| Имя метрики | Описание | Комментарии |
|---|---|---|
JitterInMs |
Джиттер пакетов (в миллисекундах) | Чем меньше это значение, тем лучше. |
PacketCount |
Общее количество отправленных пакетов. |