Utilisez l'API audio fallback pour donner dynamiquement la priorité à l'audio en fonction de la qualité du réseau.
Notes : Les otc_publisher_set_audio_fallback_enabled() et otc_publisher_get_audio_fallback_enabled() seront obsolètes. Veuillez utiliser les fonctions otc_publisher_settings_set_publisher_audio_fallback_enabled et otc_publisher_settings_set_subscriber_audio_fallback_enabled au lieu de cela.
Enabling and disabling audio-only fallback
Pour activer le repli audio de l'éditeur, appelez la fonction otc_publisher_settings_set_publisher_audio_fallback_enabled() fonction.
// Enable publisher audio fallback
otc_publisher_settings publisher_settings = otc_publisher_settings_new();
otc_publisher_settings_set_publisher_audio_fallback_enabled(publisher_settings, OTC_TRUE);
otc_publisher_callbacks publisher_callbacks = {0};
struct otc_publisher* publisher = otc_publisher_new_with_settings(&publisher_callbacks, publisher_settings);
// Enable publisher audio fallback and disable subscriber audio fallback
otc_publisher_settings publisher_settings = otc_publisher_settings_new();
otc_publisher_settings_set_publisher_audio_fallback_enabled(publisher_settings, OTC_TRUE);
otc_publisher_settings_set_subscriber_audio_fallback_enabled(publisher_settings, OTC_FALSE);
otc_publisher_callbacks publisher_callbacks = {0};
struct otc_publisher* publisher = otc_publisher_new_with_settings(&publisher_callbacks, publisher_settings);
// Enable subscriber audio fallback and disable publisher audio fallback
otc_publisher_settings publisher_settings = otc_publisher_settings_new();
otc_publisher_settings_set_publisher_audio_fallback_enabled(publisher_settings, OTC_FALSE);
otc_publisher_settings_set_subscriber_audio_fallback_enabled(publisher_settings, OTC_TRUE);
otc_publisher_callbacks publisher_callbacks = {0};
struct otc_publisher* publisher = otc_publisher_new_with_settings(&publisher_callbacks, publisher_settings);
Pour activer et désactiver le repli audio de l'abonné (pour tous les abonnés au flux), appelez la fonction otc_publisher_settings_set_subscriber_audio_fallback_enabled() fonction. Le repli audio de l'abonné n'est pris en charge que dans les sessions acheminées (sessions qui utilisent la fonction 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.
Audio fallback events
Lorsque le repli audio de l'éditeur est activé, les fonctions de rappel dans le fichier otc_publisher_callbacks sont invoquées pour les événements liés au repli audio de l'éditeur :
otc_publisher_callbacks.on_video_disable_warning()- 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.otc_publisher_callbacks.on_video_disable_warning_lifted()- 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.otc_publisher_callbacks.on_video_disabled()- 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.otc_publisher_callbacks.on_video_enabled()- Appelé avec la raison "quality" lorsque l'éditeur détermine 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 associés (afin que vous puissiez fournir vos propres notifications à l'interface utilisateur) :
static void on_video_disable_warning(otc_publisher* publisher,
void* user_data) {
// Custom action — for example, add custom UI notification
}
static void on_video_disable_warning_lifted(otc_publisher* publisher,
void* user_data) {
// Custom action — for example, remove custom UI notification
}
static void on_video_disabled(otc_publisher* publisher,
void* user_data,
enum otc_video_reason reason) {
// Custom action — for example, add custom UI notification
}
static void on_video_enabled(otc_publisher* publisher,
void* user_data,
enum otc_video_reason reason) {
// Custom action — for example, remove custom UI notification
}
struct otc_publisher_callbacks publisher_callbacks = {0};
publisher_callbacks.on_video_disable_warning = on_video_disable_warning;
publisher_callbacks.on_video_disable_warning_lifted = on_video_disable_warning_lifted;
publisher_callbacks.on_video_disabled = on_video_disabled;
publisher_callbacks.on_video_enabled = on_video_enabled;
Du point de vue de l'abonné, les événements suivants indiquent que le repli audio s'est produit. Bien que ces événements soient liés à l'abonné ils peuvent se produire à la fois en raison du repli audio de l'abonné et en conséquence du repli audio de l'éditeur. En d'autres termes, la différence entre le repli audio de l'éditeur et celui de l'abonné est la suivante la différence entre le repli audio de l'éditeur et de l'abonné est que, dans le cas de l'éditeur, le client de publication peut déclencher le repli audio sur la base de son propre flux. sur la base de sa propre dégradation du flux, ce qui explique pourquoi des événements supplémentaires sont envoyés du côté de l'éditeur. Pour le repli audio de l'abonné le Video Media Router de Vonage évalue la dégradation du réseau affectant l'abonné. Dans les deux cas, lors d'un repli audio de l'éditeur ou de l'abonné, les événements de l'abonné sont envoyés. les événements de l'abonné sont toujours envoyés pour indiquer que le récepteur a bénéficié d'un repli audio.
Lorsque le repli audio se produit, les fonctions de rappel dans le fichier otc_subscriber_callbacks sont invoquées pour les événements liés au repli audio de l'abonné :
otc_subscriber_callbacks.on_video_disable_warning()- Appelé lorsque l'abonné 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.otc_subscriber_callbacks.on_video_disable_warning_lifted()- Appelé lorsque l'abonné détermine 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.otc_subscriber_callbacks.on_video_disabled()- Appelé lorsque l'abonné 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'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.otc_subscriber_callbacks.on_video_enabled()- Appelé avec le motif "qualité" lorsque l'abonné détermine 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) :
static void on_video_disable_warning(otc_subscriber* subscriber,
void* user_data) {
// Custom action — for example, add custom UI notification
}
static void on_video_disable_warning_lifted(otc_subscriber* subscriber,
void* user_data) {
// Custom action — for example, remove custom UI notification
}
static void on_video_disabled(otc_subscriber* subscriber,
void* user_data,
enum otc_video_reason reason) {
// Custom action — for example, add custom UI notification
}
static void on_video_enabled(otc_subscriber* subscriber,
void* user_data,
enum otc_video_reason reason) {
// Custom action — for example, remove custom UI notification
}
struct otc_subscriber_callbacks subscriber_callbacks = {0};
subscriber_callbacks.on_video_disable_warning = on_video_disable_warning;
subscriber_callbacks.on_video_disable_warning_lifted = on_video_disable_warning_lifted;
subscriber_callbacks.on_video_disabled = on_video_disabled;
subscriber_callbacks.on_video_enabled = on_video_enabled;