S'abonner : Gestion et événements
Ce guide couvre la gestion du comportement des abonnés et la réaction aux événements d'exécution, à la fois pour le Web (JavaScript) et React Native.
Gestion des flux d'abonnés (React Native)
Détection d'un changement des dimensions vidéo d'un flux
Les dimensions vidéo d'un flux peuvent changer si un flux publié à partir d'un appareil mobile est redimensionné (par exemple, en raison d'un changement d'orientation de l'appareil) ou si la fenêtre d'une source de partage d'écran est redimensionnée. Lorsque les dimensions vidéo d'un flux changent, l'objet Session envoie un événement, avec la valeur .
Réglage de la fréquence d'images et de la résolution préférées
Lorsque vous vous abonnez à un flux qui utilise la fonction de vidéo évolutive, vous pouvez configurer pour gérer automatiquement la résolution vidéo de l'abonné et optimiser l'utilisation de l'unité centrale et du réseau. Pour un contrôle avancé, définissez la fréquence d'images et la résolution préférées pour le flux abonné :
- - Les valeurs valides sont 30, 15, 7 et 1. Laisser indéfini pour utiliser la fréquence d'images la plus élevée disponible.
- - Les valeurs valides sont , , et . Laisser indéfini pour utiliser la plus haute résolution disponible.
Détecter quand les flux quittent une session
Lorsqu'un flux distant quitte une session, le composant envoie un événement :
L'événement comprend des détails tels que , , , , , et .
Rendu personnalisé des abonnés
Par défaut, il rend les vues enfant pour les vidéos d'abonnés. Vous pouvez également fournir une fonction de rendu pour contrôler entièrement le rendu à l'aide de :
Définition des propriétés des flux
Définir des propriétés globales pour tous les abonnés via la fonction prop on , ou définir des propriétés par flux via la fonction prop.
Gestion des flux d'abonnés (iOS Swift)
Gérer les abonnés, les événements et les préférences dans iOS.
Détection de la désactivation de la vidéo d'un abonné
func subscriberVideoDisabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
print("subscriber video disabled.")
}
Raisons possibles
OTSubscriberVideoEventPublisherPropertyChangedOTSubscriberVideoEventQualityChangedOTSubscriberVideoEventSubscriberPropertyChanged
Lorsque la vidéo reprend :
func subscriberVideoEnabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
print("subscriber video enabled.")
}
Obtenir des informations sur un cours d'eau
Les OTStream L'objet comprend
connection- Le lien avec l'éditioncreationTime- HorodatagehasAudio- BoolhasVideo- Boolname- Nom du flux (facultatif)session- Session associéestreamId- Identifiant uniquevideoDimensions- CGSizevideoType- Caméra, écran ou personnalisé
Vous pouvez surveiller les statistiques à l'aide de OTSubscriberKitNetworkStatsDelegate.
Voir le guide d'observabilité du client pour plus de détails.
Réglage de la fréquence d'images et de la résolution préférées
Pour les flux vidéo évolutifs, vous pouvez définir :
SubscriberKit.preferredFrameRateSubscriberKit.preferredResolution
Gestion des flux d'abonnés (JavaScript Only)
Restriction de la fréquence d'images d'un flux souscrit
Vous pouvez également limiter la fréquence d'images du flux vidéo d'un abonné. Pour limiter la fréquence d'images d'un abonné, appelez la méthode de l'objet Abonné, en indiquant :
Passez et la fréquence d'images du flux vidéo n'est pas limitée :
Lorsque la fréquence d'images est limitée, l'image vidéo de l'abonné est actualisée une fois ou moins par seconde.
Cette fonction n'est disponible que dans les sessions qui utilisent le routeur de médias (sessions dont le mode média est réglé sur routé), et non dans les sessions dont le mode média est réglé sur relayé. Dans les sessions relayées, l'appel à cette méthode n'a aucun effet.
La limitation de la fréquence d'images de l'abonné présente les avantages suivants :
- Il réduit l'utilisation de l'unité centrale.
- Il réduit la largeur de bande du réseau consommée par l'application.
- Il vous permet de vous abonner à plusieurs flux simultanément.
La réduction de la fréquence d'images d'un abonné n'a aucun effet sur la fréquence d'images de la vidéo dans les autres clients.
Détection du blocage ou du déblocage de l'audio d'un abonné
Certains navigateurs bloquent automatiquement la lecture audio et exigent un événement avant que la lecture audio ne commence pour les abonnés. Ces navigateurs sont Safari, Firefox 66+ et Chrome 71+.
L'objet Abonné affiche un bouton de lecture audio si la lecture audio est bloquée. Vous pouvez désactiver le bouton de lecture audio par défaut de l'Abonné et afficher votre propre élément d'interface utilisateur sur lequel l'utilisateur devra cliquer pour lancer la lecture audio.
Voir Affichage d'un élément d'interface utilisateur personnalisé lorsque l'audio de l'abonné est bloqué.
Lorsque l'audio de l'abonné est bloqué, l'objet Subscriber envoie un événement, et il envoie un événement lorsque l'audio est débloqué :
En outre, l'abonné inclut une fonction qui indique si l'audio est bloqué ou non.
L'audio de l'abonné est débloqué lorsque l'une des situations suivantes se produit :
- L'utilisateur clique sur l'icône de lecture audio par défaut de l'abonné.
- Les OT.unblockAudio() est appelée en réponse à un élément HTML envoyant un événement (si vous avez désactivé l'icône de lecture audio par défaut)
- Le client local a accès à la caméra ou au microphone (par exemple, à la suite d'un appel réussi à ).
Pour plus d'informations, voir cet article de Mozilla sur l'autoplay dans Firefox et cet article de Google sur la lecture automatique dans Chrome.
Détection de la désactivation de la vidéo d'un abonné
Lorsque la vidéo de l'abonné est désactivée, l'objet Abonné envoie un événement :
Lorsque le routeur multimédia désactive la vidéo d'un abonné, il se peut que vous souhaitiez ajuster l'interface utilisateur liée à l'abonné.
La propriété de l'objet événement définit la raison pour laquelle la vidéo a été désactivée. Elle peut prendre l'une des valeurs suivantes :
- - L'éditeur a cessé de publier des vidéos en appelant .
- - Le routeur multimédia a cessé d'envoyer de la vidéo à l'abonné en fonction des changements de qualité du flux. Cette fonction du routeur multimédia permet à l'abonné d'interrompre le flux vidéo lorsque la connectivité se dégrade. (L'abonné continue à recevoir le flux audio, s'il y en a un).
Avant d'envoyer cet événement, lorsque la qualité du flux de l'abonné se détériore à un niveau suffisamment bas pour que le flux vidéo risque d'être désactivé, l'abonné envoie un événement.
Si la connectivité s'améliore et prend à nouveau en charge la vidéo, l'objet Abonné envoie un événement et l'Abonné reprend la réception de la vidéo.
Par défaut, l'abonné affiche un indicateur de désactivation vidéo lorsqu'un événement avec ce motif est envoyé et supprime l'indicateur lorsque l'événement se produit.
Lorsque vous publiez un flux, vous pouvez éviter que sa vidéo soit désactivée en raison de la qualité du flux. Définissez à dans les options que vous passez dans .
Obtenir des statistiques sur les abonnés (Web)
La méthode d'un objet Subscriber vous fournit des informations sur le flux de l'abonné, notamment les suivantes :
- Le nombre total de paquets audio et vidéo perdus
- Nombre total de paquets audio et vidéo reçus
- Nombre total d'octets audio et vidéo reçus
- Taux de rafraîchissement moyen de la vidéo
Le code suivant enregistre les taux de perte et les débits binaires toutes les secondes :
Pour obtenir des statistiques sur un flux publié par le client local, vous devez utiliser une session acheminée et activer l'option lors de la souscription :
Pour obtenir des statistiques plus détaillées sur les flux, utilisez .
Réglage de la fréquence d'images et de la résolution préférées (Web)
Lorsque vous vous abonnez à un flux qui utilise la fonction de vidéo évolutive, vous pouvez configurer pour gérer automatiquement la résolution vidéo de l'abonné. Pour un contrôle plus poussé, définissez et dans les options que vous passez à (ou utilisez et après l'abonnement).
Gestion des flux d'abonnés (Android)
Gérer les abonnés, les événements et les préférences dans Android.
Détection de la désactivation de la vidéo d'un abonné
Lorsque la vidéo est désactivée :
override fun onVideoDisabled(subscriber: SubscriberKit, reason: String) {
// Video disabled
}
Lorsque la vidéo reprend :
override fun onVideoEnabled(subscriber: SubscriberKit, reason: String) {
// Video resumed
}
Les reason explique pourquoi le changement s'est produit.
Obtenir des informations sur un cours d'eau
Les Stream fournit :
getConnection()- Objet de connexiongetCreationTime()- Horodatage de la créationhasAudio()- BooléenhasVideo()- BooléengetName()- Nom du cours d'eaugetStreamId()- Identifiant uniquegetVideoHeight()- Hauteur en pixelsgetVideoWidth()- Largeur en pixelsgetVideoType()- Caméra, partage d'écran ou personnalisé
Vous pouvez également suivre les statistiques :
setAudioStatsListener()setVideoStatsListener()setMediaLinkStatsListener()getRtcStatsReport()
Réglage de la fréquence d'images et de la résolution préférées
Pour les flux vidéo évolutifs, vous pouvez définir des préférences :
SubscriberKit.setPreferredFrameRate()SubscriberKit.setPreferredResolution()
Gestion des flux d'abonnés (Windows)
Gérer les abonnés, les événements et les préférences dans Windows.
Détection de la désactivation de la vidéo d'un abonné
L'OpenTok Media Router peut cesser d'envoyer des vidéos si les conditions du réseau se dégradent.
L'abonné continue à recevoir le son s'il est disponible.
Lorsque la vidéo est désactivée, le Subscriber envoie un VideoDisabled événement :
subscriber.VideoDisabled += Subscriber_VideoDisabled;
public void Subscriber_VideoDisabled(object sender)
{
// Display a user interface notification.
}
Lorsque la vidéo reprend :
subscriber.VideoEnabled += Subscriber_VideoEnabled;
public void Subscriber_VideoEnabled(object sender)
{
// Video resumes for the subscriber.
}
Il se peut que vous souhaitiez adapter l'interface utilisateur en fonction de ces événements.
Obtenir des informations sur un cours d'eau
Les Stream expose les propriétés suivantes :
Connection- Le lien avec l'éditionCreationTime- Horodatage de la création du fluxHasAudio- Si le flux contient de l'audioHasVideo- Si le flux contient de la vidéoName- Nom du cours d'eauId- Identifiant unique du fluxHeight- Hauteur de la vidéo en pixelsWidth- Largeur de la vidéo en pixelsVideoSourceType- Caméra, partage d'écran ou type de source personnalisé
Possible VideoSourceType valeurs :
VideoSourceType.StreamVideoTypeCameraVideoSourceType.StreamVideoTypeScreenVideoSourceType.StreamVideoTypeCustom
Statistiques de suivi
Ces événements permettent de contrôler les statistiques des flux :
Subscriber.AudioStatsUpdatedSubscriber.VideoStatsUpdatedSubscriber.MediaLinkStatsUpdated
Pour récupérer les statistiques RTC de bas niveau :
subscriber.GetRtcStatsReport();
Réglage de la fréquence d'images et de la résolution préférées
Pour les flux utilisant la fonction de vidéo évolutive, configurez :
Subscriber.PreferredFramerateSubscriber.PreferredResolution
Gestion des flux d'abonnés (Linux)
Gérer les abonnés, les événements et les préférences sous Linux.
Détection de la désactivation de la vidéo d'un flux
Les on_stream_has_video_changed de la fonction de rappel du otc_session_callbacks struct est appelé lorsque la disponibilité vidéo d'un flux change.
Les stream est un pointeur sur un otc_stream struct.
Utiliser :
otc_stream_get_id(stream)
pour récupérer l'identifiant du flux.
Obtenir des informations sur un cours d'eau
Les fonctions suivantes permettent de récupérer des informations sur les flux :
otc_stream_get_connection()- Renvoie la connexion de publicationotc_stream_get_creation_time()- Renvoie l'horodatage de la création du fluxotc_stream_has_audio()- Si le flux publie de l'audiootc_stream_has_video()- Si le flux publie de la vidéootc_stream_has_audio_track()- Si le flux comporte une piste audiootc_stream_has_video_track()- Si le flux comporte une piste vidéootc_stream_get_name()- Renvoie le nom du fluxotc_stream_get_id()- Renvoie l'identifiant unique du fluxotc_stream_get_video_height()- Renvoie la hauteur de la vidéo en pixelsotc_stream_get_video_width()- Renvoie la largeur de la vidéo en pixelsotc_stream_get_video_type()- Renvoie le type de flux vidéo
Types de vidéo possibles :
OTC_STREAM_VIDEO_TYPE_CAMERAOTC_STREAM_VIDEO_TYPE_SCREEN
Statistiques de suivi
Utilisez ces fonctions de rappel pour les abonnés :
on_audio_stats()on_video_stats()on_media_link_stats()
Pour récupérer les statistiques RTC de bas niveau, utilisez :
otc_subscriber_get_rtc_stats_report()
Réglage de la fréquence d'images et de la résolution préférées
Pour les flux utilisant la fonction de vidéo évolutive, vous pouvez définir la fréquence d'images et la résolution préférées à l'aide de la fonction de vidéo évolutive :
otc_subscriber_set_preferred_framerate()otc_subscriber_set_preferred_resolution()