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 Video
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.
Obtener estadísticas para una editorial
En PublisherAudioNetworkStatsEvent y PublisherVideoNetworkStatsEvent le proporcionan una matriz
de objetos que definen las estadísticas de audio y vídeo actuales del editor.
Para un editor en una sesión enrutada (que utiliza la función OpenTok
Router multimedia), esta matriz incluye un objeto que define las estadísticas para
el flujo único de audio y video que se envía al enrutador de medios de video de Vonage. En una sesión retransmitida
la matriz incluye un objeto para cada suscriptor del flujo publicado.
El siguiente código registra algunas métricas del flujo 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
En 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);
},
}}
/>
Estructuras de datos estadísticos
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 del archivoconnectionpropiedad 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 o al Media Router.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 del archivoconnectionpropiedad 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 o al Media Router.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 abonados (AudioNetworkStats)
Proporciona estadísticas sobre la pista de audio de un abonado.
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 recepción y descodificació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 estadísticas del lado del remitente.
Activación de las estadísticas del lado del remitente
Las estadísticas del lado del emisor se reciben en los abonados. Para recibir las estadísticas del lado del emisor, habilítelas para el editor del flujo pasando el parámetro 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.
Suscripción a las estadísticas del lado del remitente
Los suscriptores reciben automáticamente las estadísticas del remitente sólo si el editor las ha activado.
No se requieren eventos o métodos adicionales; las estadísticas del remitente se incluyen en las ya existentes VideoNetworkStatsEvent objeto del evento.
Recepción de eventos estadísticos
Las estadísticas del lado del remitente se incluyen de forma opcional senderStats dentro del objeto pasado a videoNetworkStats devolución de llamada. La dirección senderStats 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 actual estimado para 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 para un editor, utilice la función OTPublisher.getRtcStatsReport() método. En respuesta a la llamada al método OTPublisher.getRtcStatsReport() método el editor rtcStatsReport es invocado. Véase el PublisherRtcStatsReportEvent para 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 para un abonado, utilice la función OTSubscriber.getRtcStatsReport() método. En respuesta a la llamada al método OTSubscriber.getRtcStatsReport() método el abonado rtcStatsReport es invocado. Véase el SubscriberRTCStatsReportEvent para más información.
<OTSubscriber
eventHandlers={{
rtcStatsReport: event => {
console.log('subscriber rtcStatsReport event', event);
}
}}