Solution de secours audio — iOS

Utilisez l'API de repli audio d'OpenTok pour hiérarchiser dynamiquement l'audio en fonction de la qualité du réseau.

Pour des informations conceptuelles, voir le aperçu du repli audio.

Notes :

  • Les OTPublisherKit.audioFallbackEnabled sera obsolète. Veuillez utiliser la propriété OTPublisherKit.subscriberAudioFallbackEnabled propriété à la place.

Cette rubrique comprend les sections suivantes :

Activation et désactivation du mode de secours « audio uniquement »

Pour activer le repli audio de l'éditeur, définissez le paramètre OTPublisherKitSettings.publisherAudioFallbackEnabled lors de la création de l'éditeur.


// Enable publisher audio fallback
OTPublisherKitSettings *settings = [[OTPublisherKitSettings alloc] init];
settings.publisherAudioFallbackEnabled = YES;

// Enable publisher audio fallback and disable subscriber audio fallback
OTPublisherKitSettings *settings = [[OTPublisherKitSettings alloc] init];
settings.publisherAudioFallbackEnabled = YES;
settings.subscriberAudioFallbackEnabled = NO;

// Enable subscriber audio fallback and disable publisher audio fallback
OTPublisherKitSettings *settings = [[OTPublisherKitSettings alloc] init];
settings.publisherAudioFallbackEnabled = NO;
settings.subscriberAudioFallbackEnabled = YES;

Pour activer et désactiver le repli audio de l'abonné (pour tous les abonnés au flux), définissez le paramètre OTPublisherKitSettings.subscriberAudioFallbackEnabled lors de la création de l'éditeur. Le repli audio de l'abonné n'est pris en charge que dans les sessions acheminées (sessions qui utilisent la propriété Routeur vidéo multimédia de Vonage). Le repli audio de l'abonné est activé par défaut (dans les sessions acheminées) pour les flux dont la source est une caméra vidéo.

Événements de repli audio

Lorsque le repli audio de l'éditeur est activé, le PublisherKitDelegate enverra les messages suivants concernant les événements liés au repli audio de l'éditeur :

  • [OTPublisherKitDelegate publisherVideoDisableWarning:] - Appelé lorsque l'éditeur détermine que la qualité du flux s'est dégradée et que la vidéo sera désactivée si la qualité se dégrade davantage.
  • [OTPublisherKitDelegate publisherVideoDisableWarningLifted:] - Appelé lorsque l'éditeur détermine que la qualité du flux s'est améliorée au point que la vidéo désactivée ne représente plus un risque immédiat.
  • [OTPublisherKitDelegate publisherVideoDisabled:reason:] - Appelé lorsque l'éditeur détermine que la qualité du flux s'est dégradée et que le transport vidéo sortant a été désactivé. Remarque : lorsque la vidéo est désactivée, l'éditeur continue d'afficher la vidéo de l'éditeur (telle que l'image de la caméra) dans l'interface utilisateur du client de publication.
  • [OTPublisherKitDelegate publisherVideoEnabled:reason:] — Qualifié à juste titre de « qualité » lorsque l'éditeur constate que la qualité du flux s'est améliorée et que le transport vidéo sortant a été réactivé.

Par exemple, le code suivant gère les événements connexes (afin que vous puissiez fournir vos propres notifications à l'interface utilisateur) :


-(void) publisherVideoDisableWarning:(OTPublisherKit *)publisher videoDisableWarning {
  // Custom action — for example, add custom UI notification
}

-(void) publisherVideoDisableWarningLifted:(OTPublisherKit *)publisher videoDisableWarningLifted {
  // Custom action — for example, remove custom UI notification
}

-(void) publisherVideoDisabled:(OTPublisherKit *)publisher reason:(OTPublisherVideoEventReason)reason {
  // Custom action — for example, add custom UI notification
}

-(void) publisherVideoEnabled:(OTPublisherKit *)publisher reason:(OTPublisherVideoEventReason)reason {
  // Custom action — for example, remove custom UI notification
}

Du point de vue de l'abonné, les événements suivants indiquent qu'un basculement audio s'est produit. Bien que ces événements soient liés à l'abonné, ils peuvent survenir aussi bien en raison d'un basculement audio côté abonné qu'à la suite d'un basculement audio côté éditeur. En d’autres termes, la différence entre le basculement audio côté éditeur et celui côté abonné réside dans le fait que, dans le cas de l’éditeur, le client éditeur peut déclencher le basculement audio en raison de la dégradation de son propre flux, ce qui explique pourquoi des événements supplémentaires côté éditeur sont envoyés. Dans le cas du basculement audio côté abonné, le Vonage Video Media Router évalue la dégradation du réseau affectant l’abonné. Dans les deux cas, lors d’un basculement audio côté éditeur ou côté abonné, des événements côté abonné sont toujours envoyés pour indiquer qu’un basculement audio s’est produit pour le destinataire.

Lorsque le repli audio se produit, le SubscriberKitDelegate L'objet enverra les messages suivants relatifs aux événements liés à la solution de secours audio :

  • [OTSubscriberKitDelegate subscriberVideoDisableWarning:] - Appelé lorsqu'il est déterminé que la qualité du flux s'est dégradée et que la vidéo sera désactivée si la qualité se dégrade davantage.
  • [OTSubscriberKitDelegate subscriberVideoDisableWarningLifted:] - Appelé lorsqu'il est déterminé que la qualité du flux s'est améliorée au point que la vidéo désactivée ne constitue pas un risque immédiat.
  • [OTSubscriberKitDelegate subscriberVideoDisabled:reason:] - Appelé lorsqu'il est déterminé que la qualité du flux s'est dégradée et que le transport vidéo sortant a été désactivé. Remarque : lorsque la vidéo est désactivée, l'abonné continue d'afficher la vidéo de l'abonné (telle que l'image de la caméra) dans l'interface utilisateur du client de publication.
  • [OTSubscriberKitDelegate subscriberVideoEnabled:reason:] - Appelé avec le motif "quality" lorsqu'il est déterminé que la qualité du flux s'est améliorée et que le transport vidéo sortant a été réactivé.

Par exemple, le code suivant gère les événements connexes (afin que vous puissiez fournir vos propres notifications à l'interface utilisateur) :


-(void) subscriberVideoDisableWarning:(OTSubscriberKit *)subscriber videoDisableWarning {
  // Custom action — for example, add custom UI notification
}

-(void) subscriberVideoDisableWarningLifted:(OTSubscriberKit *)subscriber videoDisableWarningLifted {
  // Custom action — for example, remove custom UI notification
}

-(void) subscriberVideoDisabled:(OTSubscriberKit *)subscriber reason:(OTSubscriberVideoEventReason)reason {
  // Custom action — for example, add custom UI notification
}

-(void) subscriberVideoEnabled:(OTSubscriberKit *)subscriber reason:(OTSubscriberVideoEventReason)reason {
  // Custom action — for example, remove custom UI notification
}