Compartir vía


Estadísticas de calidad de elementos multimedia

Para ayudarle a comprender mejor la calidad de los medios en VoIP y videollamadas que usan Azure Communication Services, hay una característica denominada estadísticas de calidad de medios. Úselo para examinar las métricas de calidad de audio, vídeo y uso compartido de pantalla de bajo nivel para las métricas de llamadas entrantes y salientes.

Estadísticas de calidad de elementos multimedia para una llamada en curso

Importante

A partir de la versión 1.20.1 del SDK, se actualiza la interfaz de las estadísticas de calidad de los elementos multimedia

Las estadísticas de calidad de los elementos multimedia son una característica extendida de la API Call principal. Primero debe obtener el objeto API mediaStatsFeature:

const mediaStatsFeature = call.feature(Features.MediaStats);

Para recibir los datos de estadísticas multimedia, puede suscribirse al evento sampleReported o al evento summaryReported.

El evento sampleReported se desencadena cada segundo. Es adecuado como origen de datos para la visualización de la interfaz de usuario o su propia canalización de datos.

El evento summaryReported contiene los valores agregados de los datos a lo largo de intervalos, lo que resulta útil cuando solo necesita un resumen.

Si desea controlar el intervalo del evento summaryReported, debe definir mediaStatsCollectorOptions de tipo MediaStatsCollectorOptions. En caso contrario, el SDK utiliza los valores por defecto.

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);
});

Si no necesita usar el recopilador de estadísticas multimedia, puede llamar al método dispose de mediaStatsCollector.

mediaStatsCollector.dispose();

No es necesario llamar dispose al método de mediaStatsCollector cada vez que finaliza la llamada, ya que los recopiladores se reclaman internamente cuando finaliza la llamada.

MediaStatsCollectorOptions

El MediaStatsCollectorOptions es opcional y hay dos campos opcionales en MediaStatsCollectorOptions.

  • aggregationInterval es el intervalo, en segundos, que se agregan las estadísticas. El valor predeterminado es 10.
  • dataPointsPerAggregation define cuántos puntos de datos tiene cada evento de agregación. El valor predeterminado es 6.

Estos dos valores determinan la frecuencia con la que el SDK emite el evento summaryReported y el número de puntos de datos agregados incluidos en el informe.

El evento summaryReported se genera cada aggregationInterval * dataPointsPerAggregation segundos.

Por ejemplo, si establece los siguientes valores:

  • aggregationInterval = 1
  • dataPointsPerAggregation = 60

El evento summaryReported se genera cada 60 segundos y contiene 60 unidades únicas para cada estadística registrada.

Si establece los siguientes valores:

  • aggregatinInterval = 60
  • dataPointsPerAggregation = 1

El evento summaryReported se genera cada 60 segundos y contiene una única unidad para cada estadística registrada.

procedimientos recomendados

Si desea recopilar los datos para la inspección sin conexión, se recomienda recopilar los datos y enviarlos a la ingesta de canalización después de que finalice la llamada. Si transmite los datos durante una llamada, podría usar el ancho de banda de Internet necesario para continuar con una llamada de Azure Communication Services (especialmente cuando el ancho de banda disponible es bajo).

En el evento sampleReported o en el evento summaryReported, los datos de estadísticas de datos multimedia no son solo una simple asignación de clave-valor.

Esta es la declaración de tipo de los datos del evento notificados por el evento 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>[];
}

Los datos del evento proporcionan los datos de estadísticas de cada secuencia de elementos multimedia de la llamada, incluidas las instrucciones de envío y recepción.

Se recomienda imprimir el evento mediante console.log para observar los cambios de diseño y valor, por lo que puede encontrar una manera adecuada de mostrar o procesar los datos según su escenario de uso.

Métricas de envío de audio

Nombre de métrica Descripción Comentarios
id Id. de estadística Se usa para identificar las estadísticas en los eventos, especialmente cuando hay varias estadísticas con el mismo tipo de elementos multimedia y dirección en un evento.
codecName Nombre del códec OPUS, G722.
bitrate Velocidad de bits de envío de audio (bits por segundo) Los valores generales están en el intervalo de 24 Kbps (lo habitual es 36-128 Kbps).
jitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
packets Número total de paquetes enviados.
packetsPerSecond Velocidad de paquetes (paquetes por segundo)
packetsLost El número total de paquetes perdidos notificados desde el extremo remoto.
packetsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.
rttInMs Tiempo de ida y vuelta (milisegundos) Un valor bajo es mejor. Se calcula a partir del informe del receptor RTCP. Se recomienda un tiempo de ida y vuelta de 200 ms o menos.
audioInputLevel Nivel de volumen de audio desde el micrófono El valor oscila entre 0 y 65536. Un valor de 0 representa el silencio.
transportId Id. de transporte Se usa para asociar las estadísticas en los transportes.

Métricas de recepción de audio

En las versiones del SDK anteriores a 1.20.1, jitterBufferDelayInMs existía como jitterBufferInMs.

Nombre de métrica Descripción Comentarios
id Id. de estadística Se usa para identificar las estadísticas en los eventos, especialmente cuando hay varias estadísticas con el mismo tipo de elementos multimedia y dirección en un evento.
codecName Nombre del códec OPUS, G722.
bitrate Velocidad de bits de recepción de audio (bits por segundo) Los valores generales están en el intervalo de 24 Kbps (lo habitual es 36-128 Kbps).
jitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
packets Número total de paquetes recibidos.
packetsPerSecond Velocidad de paquetes (paquetes por segundo)
packetsLost Número total de paquetes perdidos.
packetsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.
jitterBufferDelayInMs Búfer de vibración (milisegundos) Un valor bajo es mejor. El búfer de vibración se usa para una reproducción adaptable. Este valor representa cuánto tiempo permanecen los paquetes de las muestras en el búfer de vibración.
audioOutputLevel Nivel de volumen de audio de la secuencia receptora El valor oscila entre 0 y 65536. Un valor de 0 representa el silencio.
healedRatio Proporción de muestras ocultas (excepto silentConcealedSamples) con respecto al total de muestras recibidas Solo información.
transportId Id. de transporte Se usa para asociar las estadísticas en los transportes.

Métricas de envío de vídeo

A partir de la versión 1.20.1 del SDK, las métricas de envío de vídeo incluían el campo de métrica altLayouts, lo que permite una mejor representación de las estadísticas de flujos de simulcast.

Nombre de métrica Descripción Comentarios
id Id. de estadística Se usa para identificar las estadísticas en los eventos, especialmente cuando hay varias estadísticas con el mismo tipo de elementos multimedia y dirección en un evento.
codecName Nombre del códec H264, VP8, VP9.
bitrate Velocidad de bits de envío de vídeo (bits por segundo)
jitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
packets Número total de paquetes enviados.
packetsPerSecond Velocidad de paquetes (paquetes por segundo)
packetsLost El número total de paquetes perdidos notificados desde el extremo remoto.
packetsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.
rttInMs Tiempo de ida y vuelta (milisegundos) Un valor bajo es mejor. Se calcula a partir del informe del receptor RTCP. Se recomienda un tiempo de ida y vuelta de 200 ms o menos.
frameRateInput Velocidad de fotogramas procedente del origen de vídeo (fotogramas por segundo)
frameWidthInput Ancho del último fotograma que se origina en el origen de vídeo (píxeles)
frameHeightInput Alto del último fotograma que se origina en el origen de vídeo (píxeles)
framesEncoded Número de fotogramas codificados correctamente para la secuencia RTP.
frameRateEncoded Velocidad de fotogramas codificada correctamente para la secuencia RTP (fotogramas por segundo)
framesSent Número de fotogramas enviados en la secuencia RTP
frameRateSent Velocidad de fotogramas enviada en la secuencia RTP (fotogramas por segundo)
frameWidthSent Ancho de marco del marco codificado (píxel)
frameHeightSent Alto del marco codificado (píxel)
keyFramesEncoded Fotogramas clave codificados correctamente para la secuencia RTP
transportId Id. de transporte Se usa para asociar las estadísticas en los transportes.
altLayouts Secuencias de emisión simultánea altLayouts contiene las mismas métricas para el envío de vídeo

Métricas de recepción de vídeo

En las versiones del SDK anteriores a 1.20.1, jitterBufferDelayInMs existía como jitterBufferInMs.

Nombre de métrica Descripción Comentarios
id Id. de estadística Se usa para identificar las estadísticas en los eventos, especialmente cuando hay varias estadísticas con el mismo tipo de elementos multimedia y dirección en un evento.
codecName Nombre del códec H264, VP8, VP9.
bitrate Velocidad de bits de recepción de vídeo (bits por segundo)
jitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
packets Número total de paquetes recibidos.
packetsPerSecond Velocidad de paquetes (paquetes por segundo)
packetsLost Número total de paquetes perdidos.
packetsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.
rttInMs Tiempo de ida y vuelta (milisegundos) Un valor bajo es mejor. Se calcula a partir del informe del remitente RTCP. Se recomienda un tiempo de ida y vuelta de 200 ms o menos.
streamId Id. de secuencia El valor de streamId corresponde a id en VideoStreamCommon. Se puede usar para buscar coincidencias con el remitente.
jitterBufferDelayInMs Búfer de vibración (milisegundos) Un valor bajo es mejor. El búfer de vibración se usa para una reproducción adaptable. Este valor es cuánto tiempo permanecen los paquetes de los fotogramas en el búfer de vibración.
frameRateDecoded Velocidad de fotogramas descodificada correctamente para la secuencia RTP (fotogramas por segundo)
frameRateReceived Velocidad de fotogramas recibida en la secuencia RTP (fotogramas por segundo)
frameWidthReceived Ancho del marco descodificado (píxel)
frameHeightReceived Alto del marco descodificado (píxel)
longestFreezeDurationInMs Duración de inmovilización más larga (milisegundos)
totalFreezeDurationInMs Duración total de la inmovilización (milisegundos)
framesReceived Número total de fotogramas recibidos en la secuencia RTP
framesDecoded Número total de fotogramas descodificados correctamente para la secuencia RTP
framesDropped Número total de fotogramas descartados
keyFramesDecoded Número total de fotogramas clave descodificados correctamente para la secuencia RTP
transportId Id. de transporte Se usa para asociar las estadísticas en los transportes.

Métricas de envío de recursos compartidos de pantalla

Actualmente, los campos de estadísticas son los mismos que las métricas de envío de vídeo.

Métricas de recepción de recursos compartidos de pantalla

Actualmente, los campos estadísticos son los mismos que las métricas de recepción de vídeo.

Métricas de transporte

Las métricas relacionadas con el transporte se separaron después del SDK web de ACS 1.20.1.

En versiones anteriores, rttInMs existía como pairRttInMs en las estadísticas de audio, vídeo y screenShare.

availableIncomingBitrate era availableBitrate en las estadísticas de recepción de audio, vídeo y screenShare.

availableOutgoingBitrate era availableBitrate en las estadísticas de envío de audio, vídeo y screenShare.

Nombre de métrica Descripción Comentarios
id Id. de transporte Se usa para asociar con el transportId en otras estadísticas
rttInMs Tiempo de ida y vuelta (milisegundos) El valor se calcula a partir de la comprobación de conectividad de STUN. Se recomienda un tiempo de ida y vuelta de 200 ms o menos.
availableIncomingBitrate Estimación del ancho de banda (bits por segundo) Es posible que el valor no esté disponible en función del algoritmo de estimación de ancho de banda usado en la sesión de WebRTC
availableOutgoingBitrate Estimación del ancho de banda (bits por segundo) Es posible que el valor no esté disponible en función del algoritmo de estimación de ancho de banda usado en la sesión de WebRTC

Qué se ha cambiado en la versión 1.20.1 del SDK (GA)

Ahora se admite la API de características mediaStats en la versión 1.20.1 (GA).

En comparación con las versiones beta anteriores, también hemos realizado algunos cambios menores en la interfaz de API en esta versión de disponibilidad general.

En las versiones beta anteriores, pairRttInMs, availableBitrate se incluyeron en las estadísticas de audio, vídeo y screenShare. Ahora estas métricas se separan en métricas de transporte.

Hemos introducido campos de métricas packets y packetsLost en audio, vídeo, estadísticas de screenShare. Estas métricas son útiles para calcular el número total de paquetes enviados o recibidos entre dos puntos de tiempo diferentes.

Se ha quitado el frameRateOutput en las estadísticas de vídeo y screenShare. Puede usar frameRateDecoded en su lugar.

Se cambia el nombre del campo de métrica jitterBufferInMs a jitterBufferDelayInMs para proporcionar una descripción más clara, ya que esta métrica indica la duración de una estancia de paquete en el búfer de vibración.

Estadísticas de calidad de elementos multimedia para una llamada en curso

Las estadísticas de calidad de los elementos multimedia son una característica extendida de la API Call principal. Primero debe obtener el objeto API MediaStatisticsCallFeature:

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.feature(Features.MEDIA_STATISTICS);

El objeto MediaStatisticsCallFeature tiene la siguiente estructura de API:

  • El evento OnReportReceivedListener escucha los informes periódicos de las estadísticas multimedia.
  • getReportIntervalInSeconds obtiene el intervalo, en segundos, de la generación de informes de estadísticas de elementos multimedia. El SDK usa 10 segundo como valor predeterminado.
  • updateReportIntervalInSeconds() actualiza el intervalo, en segundos, de la generación de informes de estadísticas de elementos multimedia. El SDK usa 10 segundo como valor predeterminado.
  • Un MediaStatisticsReport contiene la definición de las estadísticas de elementos multimedia salientes y entrantes, clasificadas por audio, vídeo y recurso compartido de pantalla.
    • getOutgoingStatistics(): la lista de estadísticas de elementos multimedia para los elementos multimedia salientes.
      • getAudioStatistics(): la lista de estadísticas de elementos multimedia para el audio saliente.
      • getVideoStatistics(): la lista de estadísticas de elementos multimedia para el vídeo saliente.
      • getScreenShareStatistics(): la lista de estadísticas de elementos multimedia para el recurso compartido de pantalla saliente.
      • getDataChannelStatistics(): la lista de estadísticas de elementos multimedia para el canal de datos.
    • getIncomingStatistics(): la lista de estadísticas de elementos multimedia para los elementos multimedia entrantes.
      • getAudioStatistics(): la lista de estadísticas de elementos multimedia para el audio entrante.
      • getVideoStatistics(): la lista de estadísticas de elementos multimedia del vídeo entrante.
      • getScreenShareStatistics(): la lista de estadísticas de elementos multimedia para el recurso compartido de pantalla entrante.
      • getDataChannelStatistics(): la lista de estadísticas de elementos multimedia para el canal de datos.
    • getLastUpdatedAt(): la fecha en que se generó el informe.

A continuación, suscríbase al evento addOnReportReceivedListener para obtener actualizaciones periódicas sobre las estadísticas actuales de calidad de los elementos multimedia:

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();
}

procedimientos recomendados

Si desea recopilar los datos para la inspección sin conexión, se recomienda recopilar los datos y enviarlos a la ingesta de canalización después de que finalice la llamada. Si transmite los datos durante una llamada, podría usar el ancho de banda de Internet necesario para continuar con una llamada de Azure Communication Services (especialmente cuando el ancho de banda disponible es bajo).

Métricas de audio salientes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de envío de audio (bits por segundo) Los valores generales están en el intervalo de 24 Kbps (lo habitual es 36-128 Kbps).
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.

Métricas de audio entrantes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.
PacketsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.

Métricas de vídeo salientes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de envío de vídeo (bits por segundo)
PacketCount Número total de paquetes enviados.
FrameRate Velocidad de fotogramas enviada en la secuencia RTP (fotogramas por segundo)
FrameWidth Ancho del marco codificado (píxeles)
FrameHeight Alto del marco codificado (píxeles)

Métricas de vídeo entrantes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de recepción de vídeo (bits por segundo)
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.
PacketsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.
StreamId Id. de secuencia El valor de streamId corresponde al identificador del vídeo del participante remoto. Se puede usar para buscar coincidencias con el remitente.
FrameRate Velocidad de fotogramas recibida en la secuencia RTP (fotogramas por segundo)
FrameWidth Ancho del marco descodificado (píxeles)
FrameHeight Alto del marco descodificado (píxeles)
TotalFreezeDurationInMs Duración total de la inmovilización (milisegundos)

Métricas de recursos compartidos de pantalla salientes

Actualmente, los campos de estadísticas son los mismos que las métricas de vídeo salientes.

Métricas de recursos compartidos de pantalla entrantes

Actualmente, los campos de estadísticas son los mismos que las métricas de vídeo entrantes.

Métricas del canal de datos salientes

Nombre de métrica Descripción Comentarios
PacketCount Número total de paquetes enviados.

Métricas de canal de datos entrantes

Nombre de métrica Descripción Comentarios
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.

Estadísticas de calidad de elementos multimedia para una llamada en curso

Las estadísticas de calidad de los elementos multimedia son una característica extendida de la API Call principal. Primero debe obtener el objeto API mediaStatisticsCallFeature:

var mediaStatisticsCallFeature = self.call.feature(Features.mediaStatistics)

El objeto mediaStatisticsCallFeature tiene la siguiente estructura de API:

  • El método delegado didReceiveReport escucha los informes periódicos de las estadísticas de elementos multimedia.
  • reportIntervalInSeconds obtiene el intervalo, en segundos, de la generación de informes de estadísticas de elementos multimedia. El SDK usa 10 segundo como valor predeterminado.
  • updateReportInterval(inSeconds) actualiza el intervalo, en segundos, de la generación de informes de estadísticas de elementos multimedia. El SDK usa 10 segundo como valor predeterminado.
  • Un objeto MediaStatisticsReport contiene la definición de las estadísticas de elementos multimedia salientes y entrantes, clasificadas por audio, vídeo y recurso compartido de pantalla.
    • outgoingMediaStatistics: la lista de estadísticas de elementos multimedia para los elementos multimedia salientes.
      • audio: la lista de estadísticas de elementos multimedia para el audio saliente.
      • video: la lista de estadísticas de elementos multimedia del vídeo saliente.
      • screenShare: la lista de estadísticas de elementos multimedia para el recurso compartido de pantalla saliente.
      • dataChannel: la lista de estadísticas de elementos multimedia para el canal de datos saliente.
    • incomingMediaStatistics: la lista de estadísticas de elementos multimedia para los elementos multimedia entrantes.
      • audio: la lista de estadísticas de elementos multimedia para el audio entrante.
      • video: la lista de estadísticas de elementos multimedia del vídeo entrante.
      • screenShare: la lista de estadísticas de elementos multimedia del recurso compartido de pantalla entrante.
      • dataChannel: la lista de estadísticas de elementos multimedia para el canal de datos entrante.
    • lastUpdated: la fecha en que se generó el informe.

A continuación, implemente el delegado didReceiveReport para obtener actualizaciones periódicas sobre las estadísticas actuales de calidad de los elementos multimedia:

// 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
    }
}

procedimientos recomendados

Si desea recopilar los datos para la inspección sin conexión, se recomienda recopilar los datos y enviarlos a la ingesta de canalización después de que finalice la llamada. Si transmite los datos durante una llamada, podría usar el ancho de banda de Internet necesario para continuar con una llamada de Azure Communication Services (especialmente cuando el ancho de banda disponible es bajo).

Métricas de audio salientes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de envío de audio (bits por segundo) Los valores generales están en el intervalo de 24 Kbps (lo habitual es 36-128 Kbps).
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.

Métricas de audio entrantes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.
PacketsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.

Métricas de vídeo salientes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de envío de vídeo (bits por segundo)
PacketCount Número total de paquetes enviados.
FrameRate Velocidad de fotogramas enviada en la secuencia RTP (fotogramas por segundo)
FrameWidth Ancho del marco codificado (píxeles)
FrameHeight Alto del marco codificado (píxeles)

Métricas de vídeo entrantes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de recepción de vídeo (bits por segundo)
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.
PacketsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.
StreamId Id. de secuencia El valor de streamId corresponde al identificador del vídeo del participante remoto. Se puede usar para buscar coincidencias con el remitente.
FrameRate Velocidad de fotogramas recibida en la secuencia RTP (fotogramas por segundo)
FrameWidth Ancho del marco descodificado (píxeles)
FrameHeight Alto del marco descodificado (píxeles)
TotalFreezeDurationInMs Duración total de la inmovilización (milisegundos)

Métricas de recursos compartidos de pantalla salientes

Actualmente, los campos de estadísticas son los mismos que las métricas de vídeo salientes.

Métricas de recursos compartidos de pantalla entrantes

Actualmente, los campos de estadísticas son los mismos que las métricas de vídeo entrantes.

Métricas del canal de datos salientes

Nombre de métrica Descripción Comentarios
PacketCount Número total de paquetes enviados.

Métricas de canal de datos entrantes

Nombre de métrica Descripción Comentarios
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.

Estadísticas de calidad de elementos multimedia para una llamada en curso

Las estadísticas de calidad de los elementos multimedia son una característica extendida de la API CommunicationCall principal. Primero debe obtener el objeto API MediaStatisticsCallFeature:

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;

El objeto de característica MediaStatisticsCallFeature tiene la siguiente estructura de API:

  • El evento ReportReceived escucha los informes periódicos de las estadísticas multimedia.
  • ReportIntervalInSeconds obtiene el intervalo, en segundos, de la generación de informes de estadísticas de elementos multimedia. El SDK usa 10 segundo como valor predeterminado.
  • UpdateReportIntervalInSeconds() actualiza el intervalo, en segundos, de la generación de informes de estadísticas de elementos multimedia. El SDK usa 10 segundo como valor predeterminado.
  • Un objeto MediaStatisticsReport contiene la definición de las estadísticas de elementos multimedia salientes y entrantes, clasificadas por audio, vídeo y recurso compartido de pantalla.
    • OutgoingMediaStatistics: la lista de estadísticas de elementos multimedia para los elementos multimedia salientes.
      • Audio: la lista de estadísticas de elementos multimedia para el audio saliente.
      • Video: la lista de estadísticas de elementos multimedia del vídeo saliente.
      • ScreenShare: la lista de estadísticas de elementos multimedia para el recurso compartido de pantalla saliente.
      • DataChannel: la lista de estadísticas de elementos multimedia para el canal de datos saliente.
    • IncomingMediaStatistics: la lista de estadísticas de elementos multimedia para los elementos multimedia entrantes.
      • Audio: la lista de estadísticas de elementos multimedia para el audio entrante.
      • Video: la lista de estadísticas de elementos multimedia del vídeo entrante.
      • ScreenShare: la lista de estadísticas de elementos multimedia del recurso compartido de pantalla entrante.
      • DataChannel: la lista de estadísticas de elementos multimedia para el canal de datos entrante.
    • LastUpdateAt: la fecha en que se generó el informe.

A continuación, suscríbase al evento SampleReported para obtener actualizaciones periódicas sobre las estadísticas actuales de calidad de los elementos multimedia:

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;
}

procedimientos recomendados

Si desea recopilar los datos para la inspección sin conexión, se recomienda recopilar los datos y enviarlos a la ingesta de canalización después de que finalice la llamada. Si transmite los datos durante una llamada, podría usar el ancho de banda de Internet necesario para continuar con una llamada de Azure Communication Services (especialmente cuando el ancho de banda disponible es bajo).

Métricas de audio salientes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de envío de audio (bits por segundo) Los valores generales están en el intervalo de 24 Kbps (lo habitual es 36-128 Kbps).
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.

Métricas de audio entrantes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.
PacketsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.

Métricas de vídeo salientes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de envío de vídeo (bits por segundo)
PacketCount Número total de paquetes enviados.
FrameRate Velocidad de fotogramas enviada en la secuencia RTP (fotogramas por segundo)
FrameWidth Ancho del marco codificado (píxeles)
FrameHeight Alto del marco codificado (píxeles)

Métricas de vídeo entrantes

Nombre de métrica Descripción Comentarios
CodecName Nombre del códec
BitrateInBps Velocidad de bits de recepción de vídeo (bits por segundo)
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.
PacketsLostPerSecond Tasa de pérdida de paquetes (paquetes por segundo) Un valor bajo es mejor.
StreamId Id. de secuencia El valor de streamId corresponde al identificador del vídeo del participante remoto. Se puede usar para buscar coincidencias con el remitente.
FrameRate Velocidad de fotogramas recibida en la secuencia RTP (fotogramas por segundo)
FrameWidth Ancho del marco descodificado (píxeles)
FrameHeight Alto del marco descodificado (píxeles)
TotalFreezeDurationInMs Duración total de la inmovilización (milisegundos)

Métricas de recursos compartidos de pantalla salientes

Actualmente, los campos de estadísticas son los mismos que las métricas de vídeo salientes.

Métricas de recursos compartidos de pantalla entrantes

Actualmente, los campos de estadísticas son los mismos que las métricas de vídeo entrantes.

Métricas del canal de datos salientes

Nombre de métrica Descripción Comentarios
PacketCount Número total de paquetes enviados.

Métricas de canal de datos entrantes

Nombre de métrica Descripción Comentarios
JitterInMs Vibración de paquetes (milisegundos) Un valor bajo es mejor.
PacketCount Número total de paquetes enviados.