检查聊天指示器
可以使用 PlayFab Party 的聊天指示器来排查音频问题。 使用PartyLocalChatControl::GetLocalChatIndicator() 检查本地聊天控件的瞬时音频状态。健康的聊天控件应根据库是否检测到来自麦克风输入的语音,返回 PartyLocalChatControlChatIndicator::Silent 或 PartyLocalChatControlChatIndicator::Talking。
-
如果返回
PartyLocalChatControlChatIndicator::AudioInputMuted,则聊天控件的出站音频流之前已通过调用PartyLocalChatControl::SetAudioInputMuted(true)静音,必须通过调用PartyLocalChatControl::SetAudioInputMuted(false)禁用静音 -
如果返回
PartyLocalChatControlChatIndicator::NoAudioInput,要么本地聊天控件的音频输入从未通过调用PartyLocalChatControl::SetAudioInputMuted()设置,要么音频输入初始化失败。继续查看下一节以获取诊断音频输入初始化失败的提示。
PartyLocalChatControl::GetChatIndicator() 检查远程聊天控件相对于本地聊天控件的音频输入状态。
-
如果你期望听到音频但返回
PartyChatControlChatIndicator::Silent,则可能意味着远程音频设备存在问题,或者远程设备上的聊天权限未配置为向此聊天控件发送音频。如果这听起来像你正在遇到的情况,请继续查看以下节。 -
如果返回
PartyChatControlChatIndicator::Talking但你仍然听不到任何音频,则可能是本地音频输出设备存在问题。继续查看下一节,了解如何检查音频设备是否健康。 -
如果返回
PartyChatControlChatIndicator::IncomingVoiceDisabled,这意味着本地聊天控件未配置聊天权限以允许来自远程聊天控件的音频。继续查看聊天权限节。 -
如果返回
PartyChatControlChatIndicator::IncomingCommunicationsMuted,这意味着传入音频已通过之前调用PartyLocalChatControl::SetIncomingAudioMuted()被静音。调用PartyLocalChatControl::SetIncomingAudioMuted()取消远程聊天控件的静音。
验证音频设备是否已成功初始化
在调用PartyLocalChatControl::SetAudioInput() 或 PartyLocalChatControl::SetAudioOutput() 后不久,你将收到 PartyLocalChatAudioInputChangedStateChange 或 PartyLocalChatAudioOutputChangedStateChange。这两个状态更改都将包含可能帮助你排查任何与音频设备相关问题的信息。这些状态更改包含一个 PartyAudioInputState 字段和一个 PartyAudioOutputState 字段,它们将为你提供有关音频设备状态的信息。如果音频设备的状态不是 Initialized,则意味着 PlayFab Party 无法使用所需的音频设备。状态更改上的 errorDetail 字段也可用于获取有关此情况的更多信息。调用 PartyManager::GetErrorMessage() 以获取人类可读形式的错误详细信息。
默认情况下,聊天控件不会与任何音频设备关联。请务必对所有聊天控件调用
PartyLocalChatControl::SetAudioInput() 和 PartyLocalChatControl::SetAudioOutput()。验证聊天控件是否具有正确的聊天权限
使用PartyLocalChatControl::GetPermissions() 查找两个聊天控件之间的 PartyChatPermissionOptions。例如,如果用户 Alice 听不到另一个用户 Bob,你需要确保 Alice 有权限接收 Bob 的音频,并且 Bob 有权限向 Alice 发送音频。
在 Alice 的设备上:
检查 Windows 中的默认设备与默认通信设备
Windows 上音频的一个常见混淆点是关于默认设备和默认通信设备的概念。Windows 同时支持这两个概念,它们可以是不同的设备。按照设计,当将AudioDeviceSelectionType::SystemDefault 传递给 PartyLocalChatControl::SetAudioInput 或 PartyLocalChatControl::SetAudioOutput 时,PlayFab Party 会在库的 Windows 版本中使用默认通信设备。故障排除和测试应始终针对默认通信设备执行。