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 parPartyAudioManipulationSourceStream.
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 dePartyAudioManipulationSourceStream::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 dePartyAudioManipulationSinkStream::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.
