Observabilidad del cliente: Linux
El SDK de video de Vonage 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, video, red y del lado del emisor en una forma unificada y consciente de la sesión que permanece estable a través de 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 Vonage Video Linux envía estadísticas periódicas de la red de audio y video para editores y 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 opcional del lado del remitente.
Las estadísticas se entregan a través de:
otc_publisher_callbacks- estadísticas del editorotc_subscriber_callbacks- estadísticas de abonados
Para recibirlos, active la devolución de llamada correspondiente en el editor o el suscriptor.
Estadísticas para editores
Utilice las funciones de devolución de llamada on_audio_stats() y on_video_stats() de la aplicación otc_publisher_callbacks para supervisar las estadísticas del flujo de un editor.
Para registrar métodos de devolución de llamada para informes periódicos de estadísticas de audio y vídeo
de un editor, defina el parámetro on_audio_stats() y on_video_stats() funciones de devolución de llamada
al inicializar el otc_publisher_callbacks estructura que
utilizado por el editor.
Registre un otc_publisher_callbacks al crear el editor:
E implementar las devoluciones de llamada:
Estas funciones de devolución de llamada se llaman periódicamente para informar de las estadísticas de audio y vídeo
del editor. A cada función se le pasa lo siguiente Un puntero al archivo editor struct,
Un puntero a la datos_usuario que estableciste para el editor,
una matriz de estadísticas y el número de estadísticas de la matriz. El parámetro stats
está definido por el parámetro otc_publisher_audio_stats
y otc_publisher_video_stats structs. Para un editor en
una sesión enrutada (que utiliza el OpenTok
Router multimedia), la matriz incluye un objeto que define las estadísticas para
el flujo de medios de audio o video único 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 de
el flujo publicado.
Recepción de eventos de calidad de vídeo en los editores
Para eventos con calidad de vídeo de editor:
Activar las estadísticas para abonados
Utilice las funciones de devolución de llamada on_audio_stats() y on_video_stats() de la aplicación otc_subscriber_callbacks para supervisar las estadísticas del flujo de un abonado.
Registre un otc_subscriber_callbacks al crear el abonado:
Implementar los callbacks:
Recepción de eventos de calidad de vídeo en los abonados
Para eventos con calidad de vídeo de editor:
Estructuras de datos estadísticos
Esta sección describe los structs y campos proporcionados por la API de estadísticas de audio y vídeo del SDK de C. 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.
otc_transport_stats
Representa la estimación compartida a nivel de transporte.
connection_estimated_bandwidth- Ancho de banda de conexión disponible estimado (bps)
otc_publisher_video_stats
Proporciona estadísticas sobre la pista de vídeo de un editor:
connection_id- En una sesión retransmitida, el identificador de conexión del cliente que se suscribe al flujosubscriber_id- En una sesión retransmitida, el ID de abonado del cliente que se suscribe al flujopackets_lost- Estimación de paquetes de vídeo perdidospackets_sent- Paquetes de vídeo enviadosbytes_sent- Bytes de vídeo enviadostimestamp- Unix timestamp en milisegundosstart_time- La marca de tiempo, en milisegundos desde la época Unix, a partir de la cual los totales acumulados comenzaron a acumularse.video_layers- Matriz de estadísticas de la capa de vídeo (véase otc_publisher_video_layer_stats)transport- Estadísticas de transporte de este editor
otc_publisher_audio_stats
Proporciona estadísticas sobre la pista de audio de un editor:
connection_id- En una sesión retransmitida, el identificador de conexión del cliente que se suscribe al flujosubscriber_id- En una sesión retransmitida, el identificador de abonadopackets_lost- Estimación de paquetes de audio perdidospackets_sent- Paquetes de audio enviadosbytes_sent- Bytes de audio enviadostimestamp- Unix timestamp en milisegundosstart_time- La marca de tiempo, en milisegundos desde la época Unix, a partir de la cual los totales acumulados comenzaron a acumularse.transport- Estadísticas de transporte de este editor
otc_publisher_video_layer_stats
Representa una capa de emisión simultánea o SVC:
width- Anchura de trama codificadaheight- Altura del fotograma codificadoencoded_frame_rate- fps codificadosbitrate- Velocidad de bits de capa (bps)total_bitrate- Tasa de bits de capa, incluida la sobrecarga RTP (bps)scalability_mode- Descriptor SVC/escalabilidad (por ejemplo, "L3T3")quality_limitation_reason- Motivo de la limitación de calidad (ancho de banda, CPU, códec, resolución o cambio de capa)codec- Codec utilizado para esta capa de vídeo
otc_subscriber_video_stats
Proporciona estadísticas sobre la pista de vídeo de un abonado:
packets_lost- Estimación de paquetes de vídeo perdidospackets_received- Paquetes de vídeo recibidosbytes_received- Bytes de vídeo recibidostimestamp- Unix timestamp en milisegundossender_connection_max_allocated_bitrate- Velocidad de bits máxima opcional del lado del remitentesender_connection_estimated_bandwidth- Ancho de banda estimado por el remitente opcionalwidth- Anchura del fotograma descodificado en píxelesheight- Altura del fotograma descodificado en píxelesdecoded_frame_rate- Fotogramas descodificados por segundobitrate- Velocidad de bits de vídeo (bps)total_bitrate- Tasa de bits incluida la sobrecarga RTP (bps)pause_count- Número de pausas (>5s desde el último fotograma)total_pauses_duration- Duración total de la pausa (ms)freeze_count- Numbers of freezestotal_freezes_duration- Duración total de la congelación (ms)codec- Códec decodificador actual
otc_subscriber_audio_stats
Proporciona estadísticas sobre la pista de audio de un abonado:
packets_lost- Estimación de paquetes perdidospackets_received- Paquetes recibidosbytes_received- Bytes recibidosaudio_level- Nivel de audio (0-1,0)timestamp- Unix timestamp en milisegundossender_connection_max_allocated_bitrate- Velocidad de bits máxima opcional del lado del remitentesender_connection_estimated_bandwidth- Ancho de banda estimado por el remitente opcional
Del lado 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 llamando a otc_publisher_settings_set_sender_stats_track() antes de construir el editor:
Si el seguimiento de estadísticas del remitente no está activado, no se publicará ningún canal de estadísticas del remitente para este editor. El valor por defecto es OTC_FALSE.
Suscripción a las estadísticas del lado del remitente
Los abonados reciben automáticamente las estadísticas del remitente cuando se registran para las llamadas de retorno de las estadísticas de vídeo o audio del abonado y el editor las envía.
Recepción de eventos estadísticos
Las estadísticas del lado del remitente se entregan como parte de las devoluciones de llamada existentes de las estadísticas del suscriptor. Los campos específicos se incluyen en otc_subscriber_video_stats y otc_subscriber_audio_stats estructuras:
sender_connection_max_allocated_bitrate- El bitrate máximo que puede estimarse para la conexiónsender_connection_estimated_bandwidth- El ancho de banda estimado actual para la conexión
Estas dos métricas se calculan por paquete de audio y vídeo, por lo que los mismos valores aparecen en las estadísticas de vídeo y audio. Como reflejan el transporte y no las pistas individuales, las métricas se comparten tanto en audio como en vídeo.
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 otc_publisher_get_rtc_stats_report() función. Proporciona informes de estadísticas RTC para el flujo de medios. Se trata de una operación asíncrona. Crear un otc_publisher_rtc_stats_report_cb struct y pasarlo al otc_publisher_set_rtc_stats_report_cb antes de llamar a otc_publisher_get_rtc_stats_report(). Cuando las estadísticas estén disponibles, el otc_publisher_rtc_stats_report_cb.on_rtc_stats_report() se llama a la función callback. Esta función incluye un stats que es un puntero a una matriz de caracteres otc_publisher_rtc_stats structs. Esta estructura incluye un json_array_of_reports propiedad. Se trata de una matriz JSON de informes de estadísticas RTC, que son similares al formato del objeto RtcStatsReport implementado en los navegadores web (véase estos documentos de Mozilla).
Para obtener estadísticas de conexión entre pares de bajo nivel para un abonado, utilice la función otc_subscriber_get_rtc_stats_report() función. Proporciona un informe de estadísticas RTC para el flujo multimedia.
Se trata de una operación asíncrona. Crea un otc_subscriber_rtc_stats_report_cb y pasarlo a la estructura otc_subscriber_set_rtc_stats_report_cb antes de llamar a otc_subscriber_get_rtc_stats_report(). Cuando las estadísticas estén disponibles, el otc_subscriber_rtc_stats_report_cb.on_rtc_stats_report se llama a la función callback.
Esta función de devolución de llamada incluye un json_array_of_reports parámetro. Se trata de una matriz JSON de informes de estadísticas RTC, que son similares al formato del objeto RtcStatsReport implementado en los navegadores web (véase estos documentos de Mozilla).
Véase también esta documentación del W3C.