Поделиться через


Статистика качества мультимедиа

Чтобы лучше понять качество мультимедиа в 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 = 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 его макет и изменения значений, чтобы найти правильный способ отображения или обработки данных в соответствии с вашим сценарием использования.

Метрики отправки звука

Имя метрики 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 в этой версии общедоступной версии.

В предыдущих бета-версиях были pairRttInMsavailableBitrate включены в статистику аудио, видео и 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 Общее количество отправленных пакетов.