Kit SDK de diffusion IVS : Modes audio mobiles | Diffusion en temps réel
La qualité audio est un élément important de toute expérience multimédia en équipe réelle. Il n’existe pas de configuration audio universelle adaptée à tous les cas d’utilisation. Pour garantir à vos utilisateurs la meilleure expérience possible lorsqu’ils écoutent un flux IVS en temps réel, nos SDK mobiles offrent plusieurs configurations audio prédéfinies, ainsi que des personnalisations plus puissantes selon les besoins.
Introduction
Les SDK de diffusion mobile IVS fournissent une classe StageAudioManager
. Cette classe est conçue pour être le point de contact unique qui permet de contrôler les modes audio sous-jacents sur les deux plateformes. Sur Android, elle contrôle l’AudioManager
Important : N’interagissez pas avec AVAudioSession
ou AudioManager
directement à l’aide du SDK de diffusion en temps réel IVS ou pendant qu’il est actif. Cela pourrait entraîner des pertes de son, ou ce dernier pourrait être enregistré ou lu sur le mauvais appareil.
Avant de créer votre premier DeviceDiscovery
ou votre premier objet Stage
, vous devez configurer la classe StageAudioManager
.
Si rien n’est défini sur StageAudioManager
avant l’initialisation d’une instance DeviceDiscovery
ou Stage
, le préréglage VideoChat
s’applique automatiquement.
Préréglages de mode audio
Le SDK de diffusion en temps réel fournit trois préréglages, chacun est adapté aux cas d’utilisation courants, comme décrit ci-dessous. Pour chaque préréglage, nous traitons cinq catégories clés qui différencient les préréglages les uns des autres.
La catégorie Variateur de volume se réfère au type de volume (volume multimédia ou volume d’appel) qui est utilisé ou modifié via les boutons de volume physiques de l’appareil. À noter que cela affecte le volume lors du changement de mode audio. Par exemple, si le volume de l’appareil est réglé au maximum en utilisant le préréglage Chat vidéo. le passage au préréglage Abonnement seul entraîne un niveau de volume différent de celui du système d’exploitation, ce qui peut entraîner un changement de volume important sur l’appareil.
Chat vidéo
Il s’agit du préréglage par défaut. Il permet à l’appareil local d’avoir une conversation en temps réel avec les autres participants.
Problème connu sur iOS : si vous utilisez ce préréglage sans connecter de microphone, le son passe par l’écouteur plutôt que par le haut-parleur de l’appareil. Utilisez ce préréglage uniquement en combinaison avec un microphone.
Catégorie | Android | iOS |
---|---|---|
Annulation de l’écho | Activées |
Activées |
Variateur de volume | Volume d’appel |
Volume d’appel |
Sélection du microphone | Limité en fonction du système d’exploitation. Les microphones USB peuvent ne pas être disponibles. |
Limité en fonction du système d’exploitation. Les microphones USB et Bluetooth peuvent ne pas être disponibles. Les casques Bluetooth qui gèrent à la fois les entrées et les sorties devraient fonctionner, comme les AirPods. |
Sortie audio | Tout périphérique de sortie devrait fonctionner. |
Limité en fonction du système d’exploitation. Les casques filaires peuvent ne pas être disponibles. |
Qualité audio | Moyenne/basse. Cela ressemblera à un appel téléphonique, et non à une lecture multimédia. |
Moyenne/basse. Cela ressemblera à un appel téléphonique, et non à une lecture multimédia. |
S’abonner uniquement
Ce préréglage est conçu pour que vous puissiez prévoir de vous abonner à d’autres participants à la diffusion, mais que vous ne diffusez pas vous-même. Il privilégie la qualité audio et prend en charge tous les périphériques de sortie disponibles.
Catégorie | Android | iOS |
---|---|---|
Annulation de l’écho | Désactivées |
Désactivées |
Variateur de volume | Volume multimédia |
Volume multimédia |
Sélection du microphone | N/A, ce préréglage n’est pas conçu pour la diffusion. |
N/A, ce préréglage n’est pas conçu pour la diffusion. |
Sortie audio | Tout périphérique de sortie devrait fonctionner. |
Tout périphérique de sortie devrait fonctionner. |
Qualité audio | Élevée. Tout type de média doit apparaître clairement, y compris la musique. |
Élevée. Tout type de média doit apparaître clairement, y compris la musique. |
Studio
Ce préréglage est conçu pour fournir un abonnement de haute qualité tout en conservant la possibilité de diffuser. Le matériel d’enregistrement et de lecture doit assurer l’annulation de l’écho. Ici, un cas d’utilisation serait de se servir d’un microphone USB et d’un casque filaire. Le SDK conservera un son de la plus haute qualité tout en s’appuyant sur la séparation physique de ces appareils pour éviter qu’ils ne génèrent de l’écho.
Catégorie | Android | iOS |
---|---|---|
Annulation de l’écho | L’annulation de l’écho de la plateforme est désactivée, mais l’annulation de l’écho du logiciel peut toujours se produire si |
Désactivées |
Variateur de volume | Volume multimédia dans la plupart des cas. Volume des appels lorsqu’un microphone Bluetooth est connecté. |
Volume multimédia |
Sélection du microphone | N’importe quel microphone devrait fonctionner. |
N’importe quel microphone devrait fonctionner. |
Sortie audio | Tout périphérique de sortie devrait fonctionner. |
Tout périphérique de sortie devrait fonctionner. |
Qualité audio | Élevée. Les deux parties doivent être en mesure d’envoyer de la musique et de l’entendre clairement de l’autre extrémité. Lorsqu’un casque Bluetooth est connecté, la qualité audio baisse en raison de l’activation du mode Bluetooth SCO. |
Élevée. Les deux parties doivent être en mesure d’envoyer de la musique et de l’entendre clairement de l’autre extrémité. Lorsqu’un casque Bluetooth est connecté, la qualité audio peut baisser en raison de l’activation du mode Bluetooth SCO, en fonction du casque. |
Cas d’utilisation avancés
Outre les préréglages, les SDK de diffusion en temps réel iOS et Android permettent de configurer les modes audio de la plateforme sous-jacente :
-
Sur Android, définissez les paramètres AudioSource
, Usage et ContentType . -
Sur iOS, utilisez AVAudioSession.Category
, AVAudioSession.CategoryOptions , AVAudioSession.mode et la possibilité de choisir si le traitement vocal est activé ou non lors de la diffusion.
Remarque : lors de l’utilisation de ces méthodes audio du kit SDK, il est possible de mal configurer la session audio sous-jacente. Par exemple, utiliser l’option .allowBluetooth
sur iOS en combinaison avec la catégorie .playback
crée une configuration audio invalide, empêchant le kit SDK d’enregistrer ou de lire de l’audio. Ces méthodes doivent être utilisées uniquement lorsqu’une application a des exigences spécifiques pour la session audio qui ont été validées.
Annulation de l’écho sur iOS
L’annulation de l’écho sur iOS peut être contrôlée indépendamment via IVSStageAudioManager
ainsi que par sa méthode echoCancellationEnabled
. Cette méthode permet de contrôler si le traitement vocalAVAudioEngine
utilisés par le kit SDK. Il est important de bien comprendre l’effet de la modification manuelle de cette propriété :
-
La propriété
AVAudioEngine
est prise en compte uniquement si le microphone du kit SDK est actif ; cela est nécessaire, car iOS exige que le traitement vocal soit activé à la fois sur les nœuds d’entrée et de sortie simultanément. En général, cela se fait en utilisant le microphone retourné parIVSDeviceDiscovery
pour créer unIVSLocalStageStream
à publier. Alternativement, le microphone peut être activé sans être utilisé pour publier, en lui associant unIVSAudioDeviceStatsCallback
. Cette approche alternative est utile si une annulation d’écho est nécessaire lors de l’utilisation d’une source audio personnalisée basée sur un microphone, au lieu du microphone du kit SDK IVS. -
L’activation de la propriété
AVAudioEngine
nécessite un mode.videoChat
ou.voiceChat
. Demander un mode différent perturbe le cadre audio sous-jacent d’iOS, ce qui peut entraîner une perte audio. -
L’activation de
AVAudioEngine
active automatiquement l’option.allowBluetooth
.
Les comportements peuvent varier selon l’appareil et la version d’iOS.
Sources audio personnalisées pour iOS
Des sources audio personnalisées peuvent être utilisées avec le kit SDK en utilisant IVSDeviceDiscovery.createAudioSource
. Lors de la connexion à une scène, le kit SDK de diffusion en temps réel IVS gère toujours une instance AVAudioEngine
interne pour la lecture audio, même si le microphone du kit SDK n’est pas utilisé. En conséquence, les valeurs fournies à IVSStageAudioManager
doivent être compatibles avec l’audio provenant de la source audio personnalisée.
Si la source audio personnalisée utilisée pour diffuser enregistre à partir du microphone, mais est gérée par l’application hôte, l’annulation d’écho du kit SDK ci-dessus ne fonctionnera pas, sauf si le microphone géré par le kit SDK est activé. Pour contourner cette exigence, consultez la section Annulation de l’écho sur iOS.
Diffusion via Bluetooth sur Android
Sur Android, le SDK revient automatiquement au préréglage VIDEO_CHAT
lorsque les conditions suivantes sont remplies :
-
La configuration attribuée n’utilise pas la valeur d’utilisation
VOICE_COMMUNICATION
. -
Un microphone Bluetooth est connecté à l’appareil.
-
Le participant local diffuse sur une scène.
Il s’agit d’une limitation du système d’exploitation Android en ce qui concerne la manière dont les casques Bluetooth sont utilisés pour l’enregistrement audio.
Intégration avec d’autres SDK
Comme iOS et Android ne prennent en charge qu’un seul mode audio actif par application, des conflits peuvent survenir si votre application utilise plusieurs SDK qui nécessitent le contrôle du mode audio. Lorsque vous êtes confronté à de tels conflits, il existe des stratégies de résolution courantes à essayer ; elles sont expliquées ci-dessous.
Faites correspondre les valeurs du mode audio
À l’aide des options de configuration audio avancées du SDK IVS ou des fonctionnalités de l’autre SDK, faites en sorte que les deux SDK s’alignent sur les valeurs sous-jacentes.
Agora
iOS
Sur iOS, le fait de demander au SDK Agora de garder la AVAudioSession
active l’empêchera de se désactiver pendant que le SDK de diffusion en temps réel IVS l’utilise.
myRtcEngine.SetParameters("{\"che.audio.keep.audiosession\":true}");
Android
Évitez d’appeler setEnableSpeakerphone
sur RtcEngine
; appelez enableLocalAudio(false)
pendant la diffusion grâce au SDK de diffusion en temps réel IVS. Vous pouvez appeler enableLocalAudio(true)
à nouveau lorsque le SDK IVS ne diffuse pas.