Suscríbete: Gestión y eventos

Esta guía cubre la gestión del comportamiento de Subscriber y la reacción a eventos en tiempo de ejecución, tanto para Web (JavaScript) como para React Native.

Gestión de flujos de suscriptores (React Native)

Detección de cambios en las dimensiones de una secuencia de vídeo

Las dimensiones de vídeo de un flujo pueden cambiar si un flujo publicado desde un dispositivo móvil cambia de tamaño (por ejemplo, debido a cambios en la orientación del dispositivo) o si se cambia el tamaño de una ventana de origen de pantalla compartida. Cuando las dimensiones de vídeo de una secuencia cambian, el objeto Session envía un evento, con el valor .

Configuración de la frecuencia de fotogramas y la resolución preferidas

Cuando se suscribe a un flujo que utiliza la función de vídeo escalable, puede configurarlo para que gestione automáticamente la resolución de vídeo del suscriptor y optimice el uso de la CPU/red. Para un control avanzado, establezca la frecuencia de imagen y la resolución preferidas para el flujo suscrito:

  • - Los valores válidos son 30, 15, 7 y 1. Deje sin definir para utilizar la frecuencia de imagen más alta disponible.
  • - Los valores válidos son , , y . Deje sin definir para utilizar la resolución más alta disponible.

Detección de flujos que abandonan una sesión

Cuando un flujo remoto abandona una sesión, el componente emite un evento:

El evento incluye detalles como , , , , , y .

Representación personalizada de los abonados

De forma predeterminada, representa las vistas secundarias de los vídeos de los suscriptores. También puedes proporcionar una función de representación para controlar totalmente la representación utilizando :

Configuración de las propiedades de la transmisión

Establece las propiedades globales para todos los suscriptores mediante la propiedad «prop» en , o bien establece las propiedades por flujo mediante la propiedad «prop».

Gestión de flujos de suscriptores (iOS Swift)

Gestiona suscriptores, maneja eventos y ajusta preferencias en iOS.

Detectar si el vídeo de un abonado está desactivado

func subscriberVideoDisabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
    print("subscriber video disabled.")
}

Posibles razones

  • OTSubscriberVideoEventPublisherPropertyChanged
  • OTSubscriberVideoEventQualityChanged
  • OTSubscriberVideoEventSubscriberPropertyChanged

Cuando se reanude el vídeo:

func subscriberVideoEnabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
    print("subscriber video enabled.")
}

Obtener información sobre un arroyo

El OTStream objeto incluye:

  • connection — El vínculo editorial
  • creationTime - Marca de tiempo
  • hasAudio - Bool
  • hasVideo - Bool
  • name — Nombre opcional de la transmisión
  • session — Sesión relacionada
  • streamId - Identificación única
  • videoDimensions - Tamaño CGS
  • videoType — Cámara, pantalla o personalizada

Puedes controlar las estadísticas con OTSubscriberKitNetworkStatsDelegate.

Véase el guía de observabilidad del cliente Para más información.

Configuración de la frecuencia de fotogramas y la resolución preferidas

Para flujos de vídeo escalables, puedes configurar:

  • SubscriberKit.preferredFrameRate
  • SubscriberKit.preferredResolution

Gestión de flujos de suscriptores (solo JavaScript)

Restringir la frecuencia de imagen de un flujo suscrito

También puedes limitar la frecuencia de fotogramas de la transmisión de vídeo de un suscriptor. Para limitar la frecuencia de fotogramas de un suscriptor, invoca el método del objeto Subscriber, pasando como parámetro:

Si se pasa , la frecuencia de fotogramas de la transmisión de vídeo no está limitada:

Cuando la frecuencia de imagen está restringida, la imagen de vídeo del abonado se actualizará una vez por segundo o menos.

Esta función sólo está disponible en sesiones que utilizan el enrutador de medios (sesiones con el modo de medios establecido en enrutado), no en sesiones con el modo de medios establecido en retransmitido. En las sesiones retransmitidas, llamar a este método no tiene ningún efecto.

La restricción de la frecuencia de imagen del abonado tiene las siguientes ventajas:

  • Reduce el uso de la CPU.
  • Reduce el ancho de banda de red que consume la aplicación.
  • Te permite suscribirte a más flujos simultáneamente.

Reducir la frecuencia de fotogramas de un suscriptor no afecta a la frecuencia de fotogramas del vídeo en otros clientes.

Detectar cuándo el audio de un suscriptor está bloqueado o desbloqueado

Algunos navegadores bloquean automáticamente la reproducción de audio, por lo que es necesario un evento antes de que comience la reproducción de audio para los suscriptores. Entre estos navegadores se encuentran Safari, Firefox 66 y versiones posteriores, y Chrome 71 y versiones posteriores.

El objeto «Subscriber» muestra un botón de reproducción de audio si la reproducción de audio está bloqueada. Puedes desactivar el botón de reproducción de audio predeterminado del «Subscriber» y mostrar tu propio elemento de interfaz de usuario en el que el usuario hará clic para iniciar la reproducción de audio.

Véase Visualización de un elemento de interfaz de usuario personalizado cuando el audio del abonado está bloqueado.

Cuando el audio del suscriptor se bloquea, el objeto Suscriptor envía un evento, y envía un evento cuando el audio se desbloquea:

Además, el suscriptor incluye una función que devuelve si el audio está bloqueado o si no lo está.

El audio del abonado se desbloquea cuando ocurre alguna de las siguientes situaciones:

  • El usuario hace clic en el icono predeterminado de reproducción de audio del suscriptor
  • El OT.desbloquearAudio() se llama en respuesta a un elemento HTML que envía un evento (si ha desactivado el icono de reproducción de audio por defecto)
  • El cliente local obtiene acceso a la cámara o al micrófono (por ejemplo, en respuesta a una llamada exitosa a ).

Para más información, consulte este artículo de Mozilla sobre la reproducción automática en Firefox y este artículo de Google sobre la reproducción automática en Chrome.

Detectar si el vídeo de un abonado está desactivado

Cuando se desactiva el vídeo del abonado, el objeto Subscriber envía un evento:

Cuando el Media Router desactiva el vídeo de un abonado, es posible que desee ajustar la interfaz de usuario relacionada con el abonado.

La propiedad del objeto de evento define el motivo por el que se desactivó el vídeo. Se puede establecer en uno de los siguientes valores:

  • — La editorial dejó de publicar vídeos tras recibir una llamada.
  • - El Media Router dejó de enviar vídeo al abonado basándose en los cambios de calidad del flujo. Esta función del Media Router hace que el abonado abandone el flujo de vídeo cuando la conectividad se degrada. (El abonado sigue recibiendo el flujo de audio, si lo hay).

Antes de enviar este evento, cuando la calidad de la transmisión del suscriptor se deteriora hasta un nivel tan bajo que la transmisión de vídeo corre el riesgo de desactivarse, el suscriptor envía un evento.

Si la conectividad mejora y vuelve a admitir vídeo, el objeto Suscriptor envía un evento y el Suscriptor reanuda la recepción de vídeo.

De forma predeterminada, el suscriptor muestra un indicador de vídeo desactivado cuando se envía un evento con este motivo y elimina el indicador cuando se produce el evento.

Cuando publiques una retransmisión, puedes evitar que se desactive el vídeo debido a la calidad de la retransmisión. Establece en en las opciones que pases a .

Obtener estadísticas de abonados (Web)

El método de un objeto «Subscriber» te proporciona información sobre el flujo del suscriptor, incluyendo lo siguiente:

  • Número total de paquetes de audio y vídeo perdidos
  • Número total de paquetes de audio y vídeo recibidos
  • Número total de bytes de audio y vídeo recibidos
  • La frecuencia de fotogramas media actual de los vídeos

El siguiente código registra los índices de pérdida y las velocidades de bits cada segundo:

Para obtener estadísticas de un flujo publicado por el cliente local, debes utilizar una sesión enrutada y establecer la opción en al suscribirte:

Para obtener estadísticas más detalladas sobre la transmisión, utiliza .

Configuración de la frecuencia de imagen y la resolución preferidas (Web)

Al suscribirse a un flujo que utiliza la función de vídeo escalable, puede configurar a para gestionar automáticamente la resolución de vídeo del suscriptor. Para un control avanzado, establezca y en las opciones que pase a (o utilice y después de suscribirse).

Gestión de flujos de abonados (Android)

Gestione suscriptores, maneje eventos y ajuste preferencias en Android.

Detectar si el vídeo de un abonado está desactivado

Cuando el vídeo está desactivado:

override fun onVideoDisabled(subscriber: SubscriberKit, reason: String) {
    // Video disabled
}

Cuando se reanude el vídeo:

override fun onVideoEnabled(subscriber: SubscriberKit, reason: String) {
    // Video resumed
}

El reason Este parámetro explica por qué se produjo el cambio.

Obtener información sobre un arroyo

El Stream El objeto proporciona:

  • getConnection() - Objeto de conexión
  • getCreationTime() - Fecha de creación
  • hasAudio() - Booleano
  • hasVideo() - Booleano
  • getName() - Nombre de la corriente
  • getStreamId() - Identificación única
  • getVideoHeight() - Altura en píxeles
  • getVideoWidth() - Anchura en píxeles
  • getVideoType() - Cámara, pantalla compartida o personalizada

También puedes controlar las estadísticas:

  • setAudioStatsListener()
  • setVideoStatsListener()
  • setMediaLinkStatsListener()
  • getRtcStatsReport()

Configuración de la frecuencia de fotogramas y la resolución preferidas

Para flujos de vídeo escalables, puedes establecer preferencias:

  • SubscriberKit.setPreferredFrameRate()
  • SubscriberKit.setPreferredResolution()

Gestión de flujos de abonados (Windows)

Gestiona los suscriptores, gestiona los eventos y modifica las preferencias en Windows.

Detectar si el vídeo de un abonado está desactivado

El OpenTok Media Router puede dejar de enviar vídeo si las condiciones de la red empeoran.

El suscriptor sigue recibiendo el audio, si está disponible.

Cuando el vídeo está desactivado, el Subscriber envía un VideoDisabled evento:

subscriber.VideoDisabled += Subscriber_VideoDisabled;

public void Subscriber_VideoDisabled(object sender)
{
    // Display a user interface notification.
}

Cuando se reanude el vídeo:

subscriber.VideoEnabled += Subscriber_VideoEnabled;

public void Subscriber_VideoEnabled(object sender)
{
    // Video resumes for the subscriber.
}

Es posible que desee ajustar la interfaz de usuario en respuesta a estos eventos.

Obtener información sobre un arroyo

El Stream expone las siguientes propiedades:

  • Connection — El vínculo editorial
  • CreationTime - Fecha de creación del flujo
  • HasAudio - Si el flujo tiene audio
  • HasVideo - Si el flujo tiene vídeo
  • Name - Nombre de la corriente
  • Id - ID único del flujo
  • Height - Altura del vídeo en píxeles
  • Width — Ancho del vídeo en píxeles
  • VideoSourceType - Cámara, pantalla compartida o fuente personalizada

Posible VideoSourceType valores:

  • VideoSourceType.StreamVideoTypeCamera
  • VideoSourceType.StreamVideoTypeScreen
  • VideoSourceType.StreamVideoTypeCustom

Estadísticas de seguimiento

Utilice estos eventos para supervisar las estadísticas del flujo:

  • Subscriber.AudioStatsUpdated
  • Subscriber.VideoStatsUpdated
  • Subscriber.MediaLinkStatsUpdated

Para recuperar estadísticas RTC de bajo nivel:

subscriber.GetRtcStatsReport();

Configuración de la frecuencia de fotogramas y la resolución preferidas

Para los flujos que utilizan la función de vídeo escalable, configure:

  • Subscriber.PreferredFramerate
  • Subscriber.PreferredResolution

Gestión de flujos de suscriptores (Linux)

Gestiona los suscriptores, organiza eventos y modifica las preferencias en Linux.

Cómo detectar cuándo el vídeo de una transmisión está desactivado

El on_stream_has_video_changed función de devolución de llamada de la otc_session_callbacks se llama cuando cambia la disponibilidad de vídeo de un flujo.

El stream El parámetro es un puntero a un otc_stream struct.

Úsalo:

otc_stream_get_id(stream)

para recuperar el ID del flujo.

Obtener información sobre un arroyo

Utiliza las siguientes funciones para obtener información sobre el flujo:

  • otc_stream_get_connection() — Devuelve la conexión de publicación
  • otc_stream_get_creation_time() — Devuelve la marca de tiempo de creación del flujo
  • otc_stream_has_audio() - Si el flujo está publicando audio
  • otc_stream_has_video() - Si el flujo está publicando vídeo
  • otc_stream_has_audio_track() — Si la transmisión tiene pista de audio
  • otc_stream_has_video_track() — Si la transmisión tiene una pista de vídeo
  • otc_stream_get_name() - Devuelve el nombre del flujo
  • otc_stream_get_id() - Devuelve el identificador único del flujo
  • otc_stream_get_video_height() - Devuelve la altura del vídeo en píxeles
  • otc_stream_get_video_width() — Devuelve el ancho del vídeo en píxeles
  • otc_stream_get_video_type() - Devuelve el tipo de flujo de vídeo

Tipos de vídeo posibles:

  • OTC_STREAM_VIDEO_TYPE_CAMERA
  • OTC_STREAM_VIDEO_TYPE_SCREEN

Estadísticas de seguimiento

Utilice estas funciones de devolución de llamada de abonado:

  • on_audio_stats()
  • on_video_stats()
  • on_media_link_stats()

Para obtener estadísticas de bajo nivel del RTC, utiliza:

otc_subscriber_get_rtc_stats_report()

Configuración de la frecuencia de fotogramas y la resolución preferidas

Para las secuencias que utilizan la función de vídeo escalable, puedes establecer la frecuencia de imagen y la resolución preferidas utilizando:

  • otc_subscriber_set_preferred_framerate()
  • otc_subscriber_set_preferred_resolution()