Réglage du son et de l'image — Linux
Vous pouvez régler les paramètres audio et vidéo de publié et abonné flux :
- Publication d'audio ou de vidéo uniquement
- Publication dans une session vocale uniquement
- Utilisation d'un capteur vidéo personnalisé
- Mise en miroir de l'affichage local de la vidéo d'un éditeur
- Utilisation d'un pilote audio personnalisé
- Réglage du volume audio pour un abonné
- Abonnement audio ou vidéo uniquement
- Détecter si un flux contient de l'audio ou de la vidéo
- Réglage de la qualité audio
- Définition des préférences de l'éditeur en matière de dégradation de la qualité vidéo
Publication d'audio ou de vidéo uniquement
Vous pouvez activer ou désactiver le son et la vidéo en appelant la fonction otc_publisher_set_publish_audio() et otc_publisher_set_publish_video() fonctions, en leur transmettant OTC_FALSE ou OTC_FALSE en tant que publish_audio et publish_audio paramètres. Par exemple, le code suivant désactive le son :
otc_publisher_set_publish_audio(publisher, OTC_FALSE);
Publication dans une session vocale uniquement
Pour mettre en place un voix seulement session, instancier un otc_publisher_settings struct, appeler la otc_publisher_settings_set_video_track() fonction, en lui transmettant OTC_FALSE en tant que enabled paramètre. Utilisez ensuite le otc_publisher_new_with_settings() fonction à créer. Par exemple, le code suivant crée un éditeur pour une session exclusivement vocale :
otc_publisher_settings publisher_settings = otc_publisher_settings_new();
otc_publisher_settings_set_video_track(publisher_settings, OTC_FALSE);
otc_publisher_callbacks publisher_callbacks = {0};
// Set callbacks for the publisher. Then:
otc_publisher publisher = otc_publisher_new_with_settings(publisher_callbacks, publisher_settings);
Utilisation d'un capteur vidéo personnalisé
Les otc_publisher_new() La fonction comprend un capturer paramètre. Si vous le définissez sur NULL, le SDK utilise l'appareil photo par défaut du système comme source pour le flux vidéo publié. Vous pouvez toutefois utiliser un capteur vidéo personnalisé pour l'éditeur en définissant un otc_video_capturer_callbacks struct et en la transmettant en tant que capturer du paramètre otc_publisher_new() fonction. La fonction otc_video_capturer_callbacks La structure contient des pointeurs vers des fonctions de rappel qui sont appelées lors d'événements liés à la vidéo de l'éditeur, par exemple lorsque le capteur vidéo a besoin d'une nouvelle image vidéo.
Pour voir un exemple, consultez l'exemple « Custom Video Capturer » de la exemples-du-SDK-Vonage-pour-Linux repo.
Mise en miroir de l'affichage local de la vidéo d'un éditeur
Par défaut, le moteur de rendu local de la vidéo publiée reflète la vidéo. Vous pouvez définir l'option mirror_on_local_render de la propriété otc_video_capturer_settings obtenue en appelant l'instance get_capture_settings(capturer, settings) fonction. Réglez-la sur true pour que la vidéo soit reflétée dans le moteur de rendu local de l'éditeur. Définissez-le à false pour qu'il ne soit pas reflété.
Ce paramètre n'affecte que la vidéo rendue dans l'application client de l'éditeur. Il n'a aucun effet sur la vidéo dans les clients abonnés.
Utilisation d'un pilote audio personnalisé
Vous pouvez définir un périphérique audio personnalisé afin de fournir le son à tous les éditeurs du client et de gérer le flux audio mixé issu de tous les flux auxquels le client est abonné.
Un périphérique audio personnalisé est représenté par un otc_audio_device struct. Et un otc_audio_device_callbacks La structure contient des pointeurs vers des fonctions qui servent de callbacks audio appelés par le SDK OpenTok pour Linux.
Pour voir un exemple, consultez l'exemple « Custom Audio Device » dans le exemples-du-SDK-Vonage-pour-Linux repo.
Réglage du volume audio pour un abonné
Vous pouvez régler individuellement le volume audio pour chaque abonné en appelant la fonction otc_subscriber_set_audio_volume() fonction.
Abonnement audio ou vidéo uniquement
Par défaut, un abonné est configuré pour s'abonner au flux audio et vidéo, s'ils sont disponibles. Vous pouvez activer ou désactiver le son en appelant la fonction otc_subscriber_set_subscribe_to_audio(otc_subscriber *subscriber, otc_bool subscribe_to_audio) :
// audio off:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_FALSE);
// audio on:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_TRUE);
Vous pouvez activer ou désactiver la vidéo en appelant la commande otc_subscriber_set_subscribe_to_video(otc_subscriber *subscriber, otc_bool subscribe_to_video) :
// video off:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_FALSE);
// video on:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_TRUE);
Détecter si un flux contient de l'audio ou de la vidéo
Vous pouvez appeler le otc_stream_has_audio() et otc_stream_has_audio() des fonctions membres d'un otc_stream pour voir s'il y a de l'audio ou de la vidéo.
Réglage de la qualité audio
Pour affiner la qualité audio d'un flux d'éditeur, les méthodes suivantes peuvent être utilisées :
Débit binaire audio
otc_publisher_set_max_audio_bitrate(otc_publisher* publisher, uint32_t bitrate);
Le débit souhaité pour l'audio publié, en bits par seconde. Les valeurs prises en charge sont comprises entre 6 000 et 510 000 (les valeurs non valides sont ignorées). (Les valeurs non valides sont ignorées.) Définissez cette valeur pour permettre un son de haute qualité (ou pour réduire l'utilisation de la bande passante avec un son de qualité inférieure). Si vous ne définissez pas cette option, OpenTok attribue automatiquement un débit audio au flux.
Les paramètres suivants sont recommandés :
- 8 000 - 12 000 pour la parole en bande étroite (NB)
- 16 000 - 20 000 pour la parole à large bande (WB)
- 28 000 - 40 000 pour la parole en bande complète (FB)
- 48 000 - 64 000 pour la musique à bande complète (FB)
Désactiver le traitement audio
otc_publisher_settings_set_disable_audio_processing (otc_publisher_settings* settings, otc_bool disabled);
Désactive ou non l'annulation de l'écho, le contrôle automatique du gain et la suppression du bruit pour l'audio publié. Il peut être utile de régler ce paramètre sur true lors de la publication d'un son de haute qualité. La valeur par défaut est false.
Contrôle automatique du gain
otc_publisher_settings_set_auto_gain_control(otc_publisher_settings* settings, otc_bool enabled);
Permet d'activer le contrôle automatique du gain pour l'audio publié. Il peut être utile de régler ce paramètre sur false lors de la publication d'un son de haute qualité. La valeur par défaut est true. Ce paramètre est ignoré si vous désactivez le traitement audio.
Annulation de l'écho
otc_publisher_settings_set_echo_cancellation(otc_publisher_settings* settings, otc_bool enabled);
Activation ou non de l'annulation de l'écho pour l'audio publié. Il peut être utile de régler ce paramètre sur false lors de la publication d'un son de haute qualité. La valeur par défaut est true. Ce paramètre est ignoré si vous désactivez le traitement audio
Suppression du bruit
otc_publisher_settings_set_noise_suppression(otc_publisher_settings* settings, otc_bool enabled);
Activer ou non la suppression du bruit pour l'audio publié. Il peut être utile de régler ce paramètre sur false lors de la publication d'un son de haute qualité. La valeur par défaut est true. Ce paramètre est ignoré si vous désactivez le traitement audio.
Stéréo
otc_publisher_settings_set_stereo(otc_publisher_settings* settings, otc_bool enabled);
Indique s'il faut publier de l'audio stéréo. La valeur par défaut est false.
Définition des préférences de l'éditeur en matière de dégradation de la qualité vidéo
Lorsque la bande passante ou l'unité centrale sont limitées, le moteur vidéo peut réduire la fréquence d'images et/ou la résolution de la vidéo de l'éditeur pour s'adapter à ces limitations.
La « préférence de dégradation » est un paramètre de configuration qui permet d'ajuster ce comportement.
Les développeurs sont chargés de définir et d'appliquer les préférences de dégradation en fonction de leur cas d'utilisation et de leurs exigences.
Il s'agit d'une préférence, ce qui signifie que le moteur vidéo essaiera de suivre la préférence sélectionnée, mais il n'y a aucune garantie quant au résultat.
Cette préférence peut se comporter différemment lors de l'utilisation de vidéo évolutiveoù le moteur vidéo peut décider de supprimer des couches au lieu de dégrader la résolution.
Indice de contenu et la préférence de dégradation ont des objectifs différents mais liés : L'indication de contenu décrit le type de contenu transmis, tandis que la préférence de dégradation contrôle la stratégie d'encodage. Lorsque vous définissez une indication de contenu, le moteur vidéo détermine automatiquement la préférence de dégradation appropriée (par exemple, "texte" sélectionne automatiquement le maintien de la résolution). Une préférence de dégradation explicitement définie remplacera cette sélection automatique.
Vous pouvez définir cette valeur à l'aide de l'une des options suivantes otc_degradation_preference valeurs :
Non défini
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_NOT_SET);
Valeur par défaut. Le moteur vidéo déterminera le niveau de dégradation optimal.
Conserver la fréquence d'images et la résolution
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE_AND_RESOLUTION);
Le moteur vidéo s'efforcera de maintenir une fréquence d'images constante sans réduire la résolution.
Maintenir la fréquence d'images
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE);
Le moteur vidéo s'efforcera de maintenir une fréquence d'images constante, mais pourra réduire la résolution si nécessaire.
Conserver la résolution
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_RESOLUTION);
Le moteur vidéo ne réduira pas la résolution, mais pourra réduire la fréquence d'images si nécessaire.
Équilibré
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_BALANCED);
Le moteur vidéo s'efforcera de trouver un juste équilibre entre la réduction de la résolution et celle de la fréquence d'images lorsque cela s'avérera nécessaire.