Skip to main content
本主題說明 XBOX One Software Development Kit 中的音訊 API 如何針對 Microsoft Game Development Kit (GDK) 進行變更。

指導方針

  • 為了協助確保使用者獲得最佳的遊戲體驗,請判斷端點是否支援多聲道音訊。首先,呼叫 IAudioClient::IsFormatSupported。如果不支援慣用的格式,請改為轉譯為混音格式 IAudioClient::GetMixFormat。
  • 遊戲不能只處理 7.1 端點,還必須能夠原生處理 2.0、5.1 和 7.1 端點,並在格式因音訊用戶端失效而變更時即時回應。如果遊戲不想提供三種 (依聲道數而定) 不同的音訊來源,可以在 Audioclient 初始化時使用 AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM 串流旗標,要求作業系統代為執行升混與降混。即使遊戲要求作業系統執行升混與降混,仍會收到 音訊用戶端失效通知,且必須對其做出回應。
  • 若要列舉 (轉譯和擷取) 音訊裝置,請使用 MMDevice API。如果只將音訊轉譯至主要 HDMI 端點,請呼叫 GetDefaultAudioEndpoint
  • 在 XBOX 上,一次只從一個處理序轉譯音訊。
  • XBOX Manager 遠端控制的設計是透過 Windows Audio Session API (WASAPI) 支援音訊。不過,啟用 Dolby/DTS 家庭劇院設定時,它不支援來自 ISpatialAudioClient (ISAC) 的音訊串流。
  • 如果用戶端應用程式所使用的音訊端點裝置變成無效,許多與 WASAPI 相關聯的方法可能會傳回錯誤碼 AUDCLNT_E_DEVICE_INVALIDATED。請確保您的遊戲能正確回應這些錯誤,這些錯誤可能會在端點裝置有任何變更時發生。如需使用 WASAPI 從無效裝置錯誤中復原的詳細資訊,請參閱這裡。確認遊戲是否正確處理音訊裝置失效的簡單方法,是在遊戲執行時切換至音訊設定頁面,並變更 HDMI 裝置的聲道數。在失效案例中,WASAPI 可能會傳回下列錯誤碼:
    • AUDCLNT_E_DEVICE_INVALIDATED
    • AUDCLNT_E_RESOURCES_INVALIDATED
    • AUDCLNT_E_UNSUPPORTED_FORMAT
    • AUDCLNT_E_ENDPOINT_CREATE_FAILED
  • 當您的遊戲使用空間音效時,您將會與 ISAC API 互動,而這些 API 也會傳回與裝置失效相關的錯誤碼。對於 ISAC,當播放期間音訊端點變更或空間轉譯模式變更時,就會發生失效。如需使用 ISAC 從無效裝置錯誤中復原的詳細資訊,請參閱這裡。當下列任何方法傳回下列其中一個值時,就會發生此情況。 方法: 值:
    • SPTLAUDCLNT_E_DESTROYED
    • AUDCLNT_E_DEVICE_INVALIDATED
    • AUDCLNT_E_RESOURCES_INVALIDATED
    • AUDCLNT_E_UNSUPPORTED_FORMAT
    • SPTLAUDCLNT_E_INTERNAL 此外,當主機設定為使用空間格式 (例如 Windows Sonic for Headphones) 時,在控制器上插入或拔除耳機很可能會引發這些事件。
  • 從 MMDevice API 取得 IMMDevice 之後,音訊裝置失效隨時可能發生。包括 IMMDevice::Activate 在內的所有呼叫都可能傳回失效錯誤。每當遊戲遇到失效錯誤時,都應該先透過 IMMDeviceEnumerator 取得新的 IMMDevice,以重新建立其音訊串流。

API 中的變更

| 目標平台| XBOX One Software Development Kit API| Microsoft Game Development Kit (GDK) API 替代項目| 描述| | --- | --- | --- | --- | --- | --- | --- | --- | --- | | PC 和 XBOX| ActivateAudioInterfaceAsync 和 IActivateAudioInterfaceAsync| IMMDevice::Activate()| 從 IMMDevice 同步啟用音訊用戶端。使用 MMDevice API 列舉端點。| | PC 和 XBOX| IAudioClient2::RegisterXBoxVolumeNotificationCallback 和 IAudioClient2::UnregisterXBoxVolumeNotificationCallback| AudioStateMonitor API| 這些 API 先前的用途是在遊戲媒體串流遭到衰減時通知遊戲。新的做法是使用 AudioStateMonitor API。| | PC 和 XBOX| ExcludeFromGameDVRCapture| 不適用| 建立 AudioClient 時,使用 AUDCLNT_STREAMFLAGS_EXCLUDE_FROM_GAMEDVR_CAPTURE 作為 StreamFlags 常數。請包含 XAUDIO2XBOX.H。| | PC 和 XBOX| IMMGameDVRDeviceCreator| 不適用| 已淘汰。| | XBOX| IMMXBoxDevice| 不適用| 已淘汰。| | PC 和 XBOX| GetPnpId| 不適用| 已淘汰。| | XBOX| IMMXboxDeviceEnumerator| IAudioClient::GetMixFormat| | | XBOX| GetHdAudioChannelCounts、RegisterChannelCountNotificationCallback 和 UnregisterChannelCountNotificationCallback| IAudioClient::GetMixFormat| 如果端點格式變更,您的串流將會失效。下一次呼叫 IAudioClient::GetMixFormat 時,將會傳回該端點適當的聲道數。| | XBOX| DisableBitStreamOut 和 RestoreBitstreamOut| 不適用| 已淘汰。| | PC 和 XBOX| EnableSpatialAudio| 不適用| 使用空間音效不再需要此呼叫。| | PC 和 XBOX| SetWasapiThreadAffinityMask| 不適用| 已淘汰。使用 XAudio2 的遊戲可以選擇透過 XAudio2CreateWithSharedContexts 調整 XAudio2Processor 參數,以指定 XAudio2 在哪個處理器上執行。|

參考 API 文件

另請參閱

Microsoft Game Development Kit 範例清單
Last modified on October 6, 2026