Skip to main content
PlayFab Party est une solution de réseautage et de clavardage vocal en temps réel. Lorsqu’il est configuré pour le clavardage vocal, PlayFab Party transmet l’audio du microphone et le lit sans modification. Certains jeux ont besoin d’accéder aux mémoires tampons audio du clavardage vocal pour mettre en œuvre des effets audio personnalisés, comme l’audio spatial ou des filtres vocaux. Ce document présente une procédure pas à pas expliquant comment utiliser la fonctionnalité de manipulation audio en temps réel pour intercepter et modifier l’audio du clavardage vocal dans PlayFab Party.

Prérequis

Cette procédure pas à pas suppose que vous connaissez les bases du clavardage vocal dans PlayFab Party.

Plateformes prises en charge

La manipulation audio en temps réel n’est pas offerte sur toutes les plateformes. Bien que les méthodes associées à la manipulation audio en temps réel soient présentes dans l’en-tête unifié multiplateforme, elles ne sont actuellement mises en œuvre que pour Windows, XBOX et PlayStation® 5. Les méthodes retourneront des erreurs sur les autres plateformes.

Flux audio

La manipulation audio en temps réel introduit le concept de flux audio pour récupérer l’audio de la bibliothèque ou lui soumettre de l’audio. Il existe deux types de flux audio. Le premier est le flux source. Un flux source sert à récupérer l’audio d’un contrôle de clavardage. Chaque contrôle de clavardage ne peut avoir qu’un seul flux source, appelé flux vocal. Pour un contrôle de clavardage local, il sert à récupérer l’entrée du microphone; pour un contrôle de clavardage distant, il sert à récupérer l’audio vocal entrant. Si le flux vocal existe pour un contrôle de clavardage, la bibliothèque redirige l’audio source de ce contrôle de clavardage vers son flux vocal plutôt que de traiter l’audio automatiquement. Pour un contrôle de clavardage local, cela signifie rediriger l’audio du microphone vers le flux vocal au lieu de l’encoder et de le transmettre automatiquement; pour un contrôle de clavardage distant, cela signifie rediriger l’audio vocal entrant vers le flux vocal au lieu de le soumettre automatiquement à chaque contrôle de clavardage local pour qu’il soit lu. Les flux sources sont représentés par PartyAudioManipulationSourceStream. Le deuxième type de flux est le flux récepteur. Un flux récepteur sert à soumettre de l’audio à un contrôle de clavardage. Seuls les contrôles de clavardage locaux peuvent avoir des flux récepteurs, et chacun peut en avoir deux. Ils sont appelés flux de capture et flux de rendu. Si le flux de capture existe pour un contrôle de clavardage, la bibliothèque extrait l’audio du flux de capture pour l’encoder et le transmettre aux autres contrôles de clavardage au lieu du microphone. Si le flux de rendu existe pour un contrôle de clavardage, la bibliothèque extrait l’audio du flux de rendu et le lit en plus de l’audio du clavardage vocal qui est lu automatiquement à partir des contrôles de clavardage distants. L’audio soumis au flux de capture est utilisé comme entrée de microphone du contrôle de clavardage local; l’audio soumis au flux de rendu est lu ou « rendu » sur le périphérique de sortie audio du contrôle de clavardage local. Les flux récepteurs sont représentés par PartyAudioManipulationSinkStream.

Configurer les flux audio

Par défaut, la bibliothèque gère la récupération, le transport et la lecture de l’audio. Par conséquent, les contrôles de clavardage sont créés sans aucun flux audio. Vous pouvez créer un ou plusieurs flux pour un contrôle de clavardage au moyen des méthodes de configuration de flux : PartyLocalChatControl::ConfigureAudioManipulationCaptureStream(), PartyLocalChatControl::ConfigureAudioManipulationRenderStream() et PartyChatControl::ConfigureAudioManipulationVoiceStream(). Une fois configuré, un flux peut ensuite être récupéré au moyen de PartyLocalChatControl::GetAudioManipulationCaptureStream(), PartyLocalChatControl::GetAudioManipulationRenderStream() et PartyChatControl::GetAudioManipulationVoiceStream() Chaque méthode de configuration de flux vous permet de préciser le format de l’audio que vous récupérerez du flux ou que vous lui soumettrez. Pour plus d’information sur les formats pris en charge, consultez la documentation de référence de chaque méthode de configuration de flux.

Récupérer l’audio d’un flux source

Vous pouvez récupérer l’audio d’un flux source au moyen de PartyAudioManipulationSourceStream::GetNextBuffer(). Lorsqu’une activité vocale est détectée, une nouvelle mémoire tampon est disponible environ toutes les 40 ms. Si aucune mémoire tampon n’est disponible, l’appel réussit et fournit une mémoire tampon de longueur nulle. Le nombre total de mémoires tampons disponibles instantanément peut être obtenu au moyen de PartyAudioManipulationSourceStream::GetAvailableBufferCount(). Par souci d’efficacité, GetNextBuffer() fournit une mémoire tampon qui pointe vers la mémoire de la bibliothèque au lieu de copier la mémoire tampon entière. Elle peut éventuellement être modifiée sur place. Une fois que vous avez terminé de traiter une mémoire tampon, vous devez la libérer au moyen de PartyAudioManipulationSourceStream::ReturnBuffer() afin que la bibliothèque puisse récupérer sa mémoire. Plusieurs mémoires tampons peuvent être récupérées avant qu’aucune ne soit retournée, et les mémoires tampons n’ont pas à être retournées dans l’ordre dans lequel elles ont été récupérées.

Soumettre de l’audio à un flux récepteur

Vous pouvez soumettre de l’audio à un flux récepteur au moyen de PartyAudioManipulationSinkStream::SubmitBuffer(). La mémoire tampon est copiée par la bibliothèque et peut être libérée immédiatement une fois l’appel terminé. Toutes les 40 ms, la bibliothèque consomme 40 ms d’audio soumis au flux récepteur. Pour éviter les interruptions audio, l’audio doit être soumis à un rythme constant.

Scénarios

Manipulation de l’audio du microphone, aussi appelée manipulation des mémoires tampons avant l’encodage

La manipulation de l’audio du microphone consiste à intercepter et à modifier l’audio du microphone avant sa transmission aux autres contrôles de clavardage. On l’appelle parfois « manipulation des mémoires tampons avant l’encodage », car l’audio du microphone est modifié avant d’être encodé et transmis aux autres contrôles de clavardage. Si vous souhaitez mettre en œuvre ce scénario pour un contrôle de clavardage local, configurez d’abord un flux vocal et un flux de capture pour le contrôle de clavardage local. Une fois la configuration effectuée, une fonction appelée à chaque cycle d’un thread audio dédié pour traiter l’audio du microphone de ce contrôle de clavardage unique pourrait ressembler à ce qui suit.

Manipulation de l’audio distant, aussi appelée manipulation des mémoires tampons après le décodage

La manipulation de l’audio distant consiste à intercepter et à modifier l’audio entrant avant qu’il soit rendu sur chaque contrôle de clavardage local. On l’appelle parfois « manipulation des mémoires tampons après le décodage », car l’audio entrant est modifié après avoir été décodé, mais avant d’être rendu. Si vous souhaitez mettre en œuvre ce scénario, configurez d’abord le flux vocal de chaque contrôle de clavardage distant et le flux de rendu de chaque contrôle de clavardage local. Ensuite, à chaque cycle, votre thread audio doit extraire l’audio de chaque flux vocal, mixer l’audio en un seul flux tout en appliquant éventuellement des effets, puis soumettre la mémoire tampon mixée à chaque flux de rendu. Selon le scénario de votre jeu, vous pourriez devoir mixer les mémoires tampons dans des flux différents pour chaque contrôle de clavardage local. Une fonction appelée à chaque cycle d’un thread audio dédié pour traiter l’audio vocal entrant pourrait ressembler à ce qui suit.

Considérations relatives à la confidentialité et au mixage

La bibliothèque fournit l’audio au moyen du flux vocal d’un contrôle de clavardage distant tant que ce contrôle de clavardage distant génère de l’audio et que les configurations des autorisations de clavardage et de la sourdine permettent la lecture de l’audio par au moins un contrôle de clavardage local. Si l’audio doit être lu pour un contrôle de clavardage local, mais pas pour un autre, vous devez l’omettre du mixage audio de ce dernier contrôle de clavardage.

Considérations relatives aux indicateurs de clavardage

La configuration d’un flux vocal pour un contrôle de clavardage distant n’a aucune incidence sur son indicateur de clavardage. Vous pourriez devoir mettre en œuvre une logique pour concilier les différences entre l’indicateur de clavardage et votre logique de mixage afin de choisir le bon indicateur d’interface utilisateur. Par exemple, l’indicateur de clavardage peut indiquer que le contrôle de clavardage est en train de parler, alors qu’une logique de mixage personnalisée peut choisir de rejeter l’audio.

Scénarios mixtes

Dans certains scénarios, vous pourriez vouloir activer la manipulation audio pour certains contrôles de clavardage, mais pas pour d’autres. Par exemple, vous voulez peut-être appliquer des effets aux joueurs adverses rencontrés pendant un match, mais pas aux joueurs de la même équipe. Dans un tel scénario, vous pouvez suivre les étapes décrites précédemment pour la manipulation de l’audio distant en configurant un flux vocal uniquement pour les contrôles de clavardage auxquels vous voulez appliquer des effets audio. L’audio des autres contrôles de clavardage distants sera automatiquement rendu sur les contrôles de clavardage locaux, tant que les configurations de sourdine et d’autorisations le permettent.
Last modified on October 6, 2026