Suscríbase: 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 .
Ajuste de la frecuencia de imagen 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 envía un evento:
El acontecimiento incluye detalles como , , , , y .
Representación personalizada de los abonados
De forma predeterminada, renderiza las vistas secundarias de los vídeos de suscriptores. También puede proporcionar una función de renderización para controlar totalmente la renderización mediante :
Configuración de las propiedades de los flujos
Establezca propiedades globales para todos los suscriptores mediante la prop on , o establezca propiedades por flujo mediante la prop.
Gestión de flujos de abonados (iOS Swift)
Gestiona suscriptores, maneja eventos y ajusta preferencias en iOS.
Detectar si el vídeo de un abonado está desactivado
Posibles razones
OTSubscriberVideoEventPublisherPropertyChangedOTSubscriberVideoEventQualityChangedOTSubscriberVideoEventSubscriberPropertyChanged
Cuando se reanude el vídeo:
Obtener información sobre un arroyo
En OTStream objeto incluye:
connection- La conexión editorialcreationTime- Marca de tiempohasAudio- BoolhasVideo- Boolname- Nombre opcional del flujosession- Sesión asociadastreamId- Identificación únicavideoDimensions- Tamaño CGSvideoType- Cámara, pantalla o personalizado
Puedes controlar las estadísticas con OTSubscriberKitNetworkStatsDelegate.
Véase el guía de observabilidad del cliente para más detalles.
Ajuste de la frecuencia de imagen y la resolución preferidas
Para flujos de vídeo escalables, puedes configurar:
SubscriberKit.preferredFrameRateSubscriberKit.preferredResolution
Gestión de flujos de abonados (sólo JavaScript)
Restringir la frecuencia de imagen de un flujo suscrito
También puede restringir la frecuencia de imagen del flujo de vídeo de un abonado. Para restringir la frecuencia de imagen de un suscriptor, llame al método del objeto Suscriptor, pasando :
Pasa y la frecuencia de imagen del flujo de vídeo no se restringe:
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 consumido por la aplicación.
- Te permite suscribirte a más flujos simultáneamente.
La reducción de la frecuencia de imagen de un abonado no afecta a la frecuencia de imagen del vídeo en otros clientes.
Detectar si el audio de un abonado está bloqueado o desbloqueado
Algunos navegadores bloquean automáticamente la reproducción de audio, requiriendo un evento antes de que comience la reproducción de audio para los suscriptores. Estos navegadores incluyen Safari, Firefox 66+ y Chrome 71+.
El objeto Subscriber muestra un botón de reproducción de audio si la reproducción de audio está bloqueada. Puede desactivar el botón de reproducción de audio predeterminado de Subscriber y mostrar su propio elemento de interfaz de usuario en el que el usuario hará clic para iniciar la reproducción de audio.
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 Abonado incluye un 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 abonado
- En 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 la razón por la que el vídeo fue desactivado. Se puede establecer en uno de los siguientes valores:
- - El editor dejó de publicar vídeo llamando .
- - 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 del flujo del abonado se deteriora hasta un nivel lo suficientemente bajo como para que el flujo de vídeo corra el riesgo de quedar inhabilitado, el abonado 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.
Por defecto, 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 un flujo, puedes evitar que se desactive su vídeo debido a la calidad del flujo. Ajústalo en las opciones que pasas a .
Obtener estadísticas de abonados (Web)
El método de un objeto Suscriptor le 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 media de imagen de vídeo actual
El siguiente código registra las tasas de pérdida y de bits cada segundo:
Para obtener las estadísticas de un flujo publicado por el cliente local, debe utilizar una sesión enrutada y configurar la opción al suscribirse:
Para obtener estadísticas más detalladas de los flujos, utilice .
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
}
En reason explica por qué se ha producido el cambio.
Obtener información sobre un arroyo
En Stream objeto proporciona:
getConnection()- Objeto de conexióngetCreationTime()- Fecha de creaciónhasAudio()- BooleanohasVideo()- BooleanogetName()- Nombre de la corrientegetStreamId()- Identificación únicagetVideoHeight()- Altura en píxelesgetVideoWidth()- Anchura en píxelesgetVideoType()- Cámara, pantalla compartida o personalizada
También puedes controlar las estadísticas:
setAudioStatsListener()setVideoStatsListener()setMediaLinkStatsListener()getRtcStatsReport()
Ajuste de la frecuencia de imagen 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)
Gestione suscriptores, maneje eventos y ajuste preferencias en Windows.
Detectar si el vídeo de un abonado está desactivado
El router multimedia OpenTok puede dejar de enviar vídeo si las condiciones de la red se degradan.
El abonado sigue recibiendo 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
En Stream expone las siguientes propiedades:
Connection- La conexión editorialCreationTime- Fecha de creación del flujoHasAudio- Si el flujo tiene audioHasVideo- Si el flujo tiene vídeoName- Nombre de la corrienteId- ID único del flujoHeight- Altura del vídeo en píxelesWidth- Anchura del vídeo en píxelesVideoSourceType- Cámara, pantalla compartida o fuente personalizada
Posible VideoSourceType valores:
VideoSourceType.StreamVideoTypeCameraVideoSourceType.StreamVideoTypeScreenVideoSourceType.StreamVideoTypeCustom
Estadísticas de seguimiento
Utilice estos eventos para supervisar las estadísticas del flujo:
Subscriber.AudioStatsUpdatedSubscriber.VideoStatsUpdatedSubscriber.MediaLinkStatsUpdated
Para recuperar estadísticas RTC de bajo nivel:
subscriber.GetRtcStatsReport();
Ajuste de la frecuencia de imagen y la resolución preferidas
Para los flujos que utilizan la función de vídeo escalable, configure:
Subscriber.PreferredFramerateSubscriber.PreferredResolution
Gestión de flujos de abonados (Linux)
Gestione suscriptores, maneje eventos y ajuste preferencias en Linux.
Detección de la desactivación de una secuencia de vídeo
En on_stream_has_video_changed de la función otc_session_callbacks se llama cuando cambia la disponibilidad de vídeo de un flujo.
En stream es un puntero a un otc_stream estructura.
Úsalo:
otc_stream_get_id(stream)
para recuperar el ID del flujo.
Obtener información sobre un arroyo
Utilice las siguientes funciones para recuperar información sobre el flujo:
otc_stream_get_connection()- Devuelve la conexión de publicaciónotc_stream_get_creation_time()- Devuelve la fecha y hora de creación del flujootc_stream_has_audio()- Si el flujo está publicando audiootc_stream_has_video()- Si el flujo está publicando vídeootc_stream_has_audio_track()- Si el flujo tiene una pista de audiootc_stream_has_video_track()- Si el flujo tiene una pista de vídeootc_stream_get_name()- Devuelve el nombre del flujootc_stream_get_id()- Devuelve el identificador único del flujootc_stream_get_video_height()- Devuelve la altura del vídeo en píxelesotc_stream_get_video_width()- Devuelve la anchura del vídeo en píxelesotc_stream_get_video_type()- Devuelve el tipo de flujo de vídeo
Tipos de vídeo posibles:
OTC_STREAM_VIDEO_TYPE_CAMERAOTC_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 recuperar estadísticas RTC de bajo nivel, utilice:
otc_subscriber_get_rtc_stats_report()
Ajuste de la frecuencia de imagen 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()