Observabilidad del cliente: React Native
El SDK de React Native expone métricas detalladas de la calidad de la transmisión a través de una API de estadísticas de alto nivel -recomendada para la mayoría de los casos de uso- que proporciona estadísticas de audio, vídeo, red y del lado del emisor de forma unificada y consciente de la sesión que permanece estable en las transiciones de conexión entre pares. Para la depuración avanzada, el SDK también ofrece acceso al informe de estadísticas WebRTC sin procesar, que refleja los datos de la conexión entre pares sin procesar.
API de estadísticas de audio y vídeo
El SDK de React Native envía periódicamente estadísticas de red de audio y vídeo tanto para editores como para suscriptores. Estas incluyen recuentos de paquetes, tasas de bits, datos de velocidad de fotogramas, métricas de pausa/congelación, información de códec y estimación de red del lado del emisor opcional.
Cómo obtener estadísticas de un editor
El Editor, Audio, Red, Estadísticas, Evento y PublisherVideoNetworkStatsEvent Los eventos te proporcionan una matriz
de objetos que definen las estadísticas actuales de audio y vídeo del emisor.
En el caso de un emisor en una sesión enrutada (una que utiliza el OpenTok
Router multimedia), este array incluye un objeto que define las estadísticas de
la única secuencia de audio y vídeo que se envía al Vonage Video Media Router. En una sesión retransmitida,
el array incluye un objeto por cada suscriptor de la secuencia publicada.
El siguiente código registra algunas métricas de la transmisión del editor:
<OTPublisher
eventHandlers={{
audioNetworkStats: event => {
console.log('publisher audioNetworkStats event', event);
},
videoNetworkStats: event => {
console.log('publisher videoNetworkStats event', event);
},
}}
/>
Obtener estadísticas de un abonado
El AudioNetworkStats y VideoNetworkStatsEvent le proporcionan información sobre el
flujo del abonado.
El siguiente código registra varias métricas para el flujo de abonados:
<OTSubscriber
eventHandlers={{
audioNetworkStats: event => {
console.log('subscriber audioNetworkStats event', event);
},
videoNetworkStats: event => {
console.log('subscriber videoNetworkStats event', event);
},
}}
/>
Estadística y estructuras de datos
En esta sección se describen los objetos y propiedades que proporciona la API de estadísticas de audio y vídeo. Aunque todas las plataformas Video SDK exponen el mismo conjunto de estadísticas, puede haber pequeñas diferencias en la forma en que cada plataforma estructura o nombra los campos individuales. Estas variaciones reflejan convenciones de diseño del SDK específicas de cada plataforma más que diferencias en las métricas subyacentes.
Para una explicación independiente de la plataforma de las estadísticas disponibles y lo que representan, consulte visión general de la observabilidad del cliente.
Estadísticas editoriales
Proporciona estadísticas sobre un editor.
Estadísticas de audio del editor (PublisherAudioNetworkStatsEvent)
Proporciona estadísticas sobre la pista de audio de un editor.
connectionId— El identificador único de la conexión del cliente, que coincide con la propiedad «id» delconnectionpropiedad delconnectionCreatedque el objeto Session envió para el cliente remoto (sólo disponible en sesiones retransmitidas).subscriberId- El identificador único del abonado, que coincide con la propiedad id del archivoSubscriberen la aplicación del cliente suscriptor (sólo disponible en sesiones retransmitidas).audioBytesSent— Total de bytes de audio enviados.audioPacketsLost— Total de paquetes de audio que no llegaron al abonado ni al enrutador multimedia.audioPacketsSent— Total de paquetes de audio enviados.timeStamp— Marca de tiempo Unix (ms) en la que se recopilaron las estadísticas.
Estadísticas de vídeo del editor (PublisherVideoNetworkStatsEvent)
Estos campos representan el rendimiento de vídeo actual del editor:
connectionId— El identificador único de la conexión del cliente, que coincide con la propiedad «id» delconnectionpropiedad delconnectionCreatedque el objeto Session envió para el cliente remoto (sólo disponible en sesiones retransmitidas).subscriberId- El identificador único del abonado, que coincide con la propiedad id del archivoSubscriberen la aplicación del cliente suscriptor (sólo disponible en sesiones retransmitidas).videoBytesSent— Total de bytes de vídeo enviados.videoPacketsLost— Total de paquetes de vídeo que no llegaron al abonado ni al enrutador multimedia.videoPacketsSent— Total de paquetes de vídeo enviados.timestamp— Marca de tiempo Unix (ms) en la que se recopilaron las estadísticas.
Estadísticas de audio de los suscriptores (AudioNetworkStats)
Proporciona estadísticas sobre la pista de audio de un suscriptor.
audioBytesReceived— Total de bytes de audio recibidos.audioPacketsLost- Total de paquetes de audio que no han llegado al abonado.audioPacketsReceived— Total de paquetes de audio recibidos correctamente.timeStamp— Marca de tiempo Unix (ms) en la que se recopilaron estas estadísticas.
Estadísticas de vídeo de abonados (VideoNetworkStatsEvent)
Estos campos describen el rendimiento de la recepción y la decodificación de vídeo en tiempo real del abonado:
videoBytesReceived- Total de bytes de vídeo recibidos.videoPacketsLost- Total de paquetes de vídeo que no llegaron al abonado.videoPacketsReceived- Total de paquetes de vídeo recibidos.timestamp— Marca de tiempo Unix (ms) en la que se recopilaron las estadísticas.
Las siguientes métricas proporcionan estimaciones de ancho de banda informadas para la conexión saliente del remitente:
senderStats.connectionMaxAllocatedBitrate- Tasa de bits máxima asignada estimada para el remitente (bps).senderStats.connectionEstimatedBandwidth- Ancho de banda de enlace ascendente actual estimado para el remitente (bps).
Estadísticas del remitente
Véase el Resumen de las estadísticas del lado del remitente.
Activación de las estadísticas del remitente
Las estadísticas del remitente se reciben en los suscriptores. Para recibir las estadísticas del remitente, actívalas para el editor de la transmisión pasando el publishSenderStats con el valor true en las propiedades del editor:
class App extends Component {
constructor(props) {
super(props);
this.publisherProperties = {
publishSenderStats: true
};
this.publisherEventHandlers = {
streamCreated: event => {
console.log('Publisher stream created!', event);
},
streamDestroyed: event => {
console.log('Publisher stream destroyed!', event);
}
};
}
render() {
return (
<OTSession apiKey="your-api-key" sessionId="your-session-id" token="your-session-token">
<OTPublisher
properties={this.publisherProperties}
eventHandlers={this.publisherEventHandlers}
style={{ height: 100, width: 100 }}
/>
</OTSession>
);
}
}
Si publishSenderStats no está activado, no se publicará ningún canal de estadísticas del remitente para este editor. El valor por defecto es false.
Suscribirse a las estadísticas del remitente
Los suscriptores reciben automáticamente las estadísticas del remitente solo si el editor las ha activado.
No se necesitan eventos ni métodos adicionales; las estadísticas del remitente ya están incluidas en el VideoNetworkStatsEvent objeto del evento.
Eventos de estadísticas de recepción
Las estadísticas del lado del remitente se incluyen como una opción senderStats dentro del objeto pasado a videoNetworkStats función de devolución de llamada. La senderStats El objeto contiene dos propiedades:
connectionMaxAllocatedBitrate- El bitrate máximo que se puede estimar para la conexión (en bits por segundo)connectionEstimatedBandwidth— El ancho de banda estimado actual de la conexión (en bits por segundo)
<OTSubscriber
eventHandlers={{
videoNetworkStats: event => {
if (event.senderStats) {
console.log('subscriber videoNetworkStats event', event.senderStats.connectionMaxAllocatedBitrate);
console.log('subscriber videoNetworkStats event', event.senderStats.connectionEstimatedBandwidth);
}
}
}}
/>
Informe de estadísticas de RTC
Para obtener estadísticas de conexión entre pares de bajo nivel de un editor, utiliza la OTPublisher.getRtcStatsReport() método. En respuesta a la llamada al OTPublisher.getRtcStatsReport() método el editor rtcStatsReport es invocado. Véase el PublisherRtcStatsReportEvent evento para obtener más información.
<OTPublisher
eventHandlers={{
rtcStatsReport: event => {
console.log('publisher rtcStatsReport event', event);
}
}}
Para obtener estadísticas de conexión entre pares de bajo nivel de un abonado, utiliza la OTSubscriber.getRtcStatsReport() método. En respuesta a la llamada al OTSubscriber.getRtcStatsReport() método el abonado rtcStatsReport es invocado. Véase el SubscriberRTCStatsReportEvent evento para obtener más información.
<OTSubscriber
eventHandlers={{
rtcStatsReport: event => {
console.log('subscriber rtcStatsReport event', event);
}
}}