Estadísticas de calidad de elementos multimedia
Para ayudarte a comprender la calidad de los elementos multimedia en las llamadas de VoIP y vídeo que usan Azure Communication Services, existe una función denominada estadísticas de calidad de los elementos multimedia. Ú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 estadísticos de los elementos multimedia, puede suscribirse a un evento sampleReported
o evento summaryReported
.
sampleReported
desencadena eventos 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 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);
});
En caso de que no necesite usar el recopilador de estadísticas de elementos multimedia, puede llamar al método dispose
de mediaStatsCollector
.
mediaStatsCollector.dispose();
No es necesario llamar al método dispose
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
= 1dataPointsPerAggregation
= 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
= 60dataPointsPerAggregation
= 1
El evento summaryReported
se genera cada 60 segundos y contiene 1 unidad única 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 elementos 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 el 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 la 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 secuencias de emisión simultánea.
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 han separado en métricas de transporte.
Hemos introducido campos de métricas packets
, packetsLost
en las estadísticas de audio, vídeo y 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 ha cambiado el nombre del campo de métrica de jitterBufferInMs
a jitterBufferDelayInMs
para proporcionar una descripción más clara, ya que esta métrica indica la duración de una estancia de paquetes 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 usa10
segundo como valor predeterminado.updateReportIntervalInSeconds()
actualiza el intervalo, en segundos, de la generación de informes de estadísticas de elementos multimedia. El SDK usa10
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(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();
}
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 usa10
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 usa10
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 usa10
segundo como valor predeterminado.UpdateReportIntervalInSeconds()
actualiza el intervalo, en segundos, de la generación de informes de estadísticas de elementos multimedia. El SDK usa10
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. |