跳轉到主要內容
在 XBOX Series X|S 上使用 XAudio2 載入並播放 .wav 檔案。 下列各節說明如何在 XBOX One 開發套件上使用 XAudio2 載入並播放音效。 如需可運作的 XAudio2 範例,請從 Microsoft Game Development Kit (GDK) 範例下載 SimplePlaySound 範例。

重要的 XAudio2 資料類型

XAudio2 提供數種資料類型,協助您在 XBOX Series X|S 上播放音效。若要播放 .wav 檔案,您至少需要下列資料類型。
  • IXAudio2:這是 XAudio2 物件的介面,此物件會管理所有音訊引擎狀態、音訊處理執行緒、語音圖形等。
  • IXAudio2SourceVoice:使用來源語音將音訊資料提交至 XAudio2 處理管線。語音資料必須傳送至主控語音才能被聽見。
  • IXAudio2MasteringVoice:使用此資料類型來代表音訊輸出裝置。資料緩衝區無法直接提交至主控語音。不過,提交至其他類型語音的資料必須導向至主控語音才能被聽見。
此外,您可能會發現下列資料類型很實用。
  • PlaySoundVoiceContext:使用此資料類型在處理後釋放音訊緩衝區。
  • IXAudio2VoiceCallback:此資料類型包含在特定 IXAudio2SourceVoice 中發生某些事件時通知用戶端的方法。

初始化 XAudio2

CoInitializeEx() 會初始化元件物件模型 (COM),供目前的執行緒使用。將第一個參數設定為 NULL。將第二個參數設定為 COINIT_MULTITHREADED。 XAudio2Create() 會建立新的 XAudio2 物件,並傳回其 IXAudio2 介面的指標。請確定 XAUDIO2_PROCESSOR 設定為有效值。建議使用 XAUDIO2_USE_DEFAULT_PROCESSOR 值,讓作業系統根據硬體平台選擇理想的處理器。 IXAudio2::CreateMasteringVoice() 會建立並設定主控語音,並以使用者提供的指標指向它。

C++

載入 .wav 檔案

若要存取音訊檔案,請使用 WaveFile 類別的執行個體。 * 若要開啟 .wav 檔案並擷取儲存在檔案標頭中的部分資訊,請呼叫 WaveFile::Open(LPCWSTR strFileName)。
  • 若要判斷 .wav 檔案的格式,請呼叫 WaveFile::GetFormat()。
  • 若要判斷 .wav 檔案中的位元組數和樣本數,請呼叫 WaveFile::GetDuration()。
  • 若要將樣本資料讀入記憶體,請呼叫 WaveFile::ReadSample()。

C++

設定 .wav 檔案的檔案路徑

若要載入並使用音訊檔案,請使用下列程式碼在本機裝置上尋找專案的安裝位置。將安裝位置儲存在字串中。將音訊檔案的位置附加到安裝位置字串的結尾。

C++

播放 .wav 檔案

建立 IXAudio2::CreateSourceVoice() 類別,然後使用它將音訊資料提交至 XAudio2 處理管線。若要讓語音資料被聽見,您必須將其直接傳送至主控語音,或透過中繼子混音語音傳送。若要儲存音訊檔案的詳細資料,請建立 XAUDIO2_BUFFER。 建立並初始化 XAudio2 緩衝區和來源語音之後,請呼叫 IXAudio2SourceVoice::SubmitSourceBuffer() 將音訊緩衝區加入語音輸入佇列。請注意,XAUDIO2_BUFFER::pAudioData 所指向的音訊資料必須保持有效,直到 XAudio2 完成播放緩衝區的內容為止。 填入語音輸入佇列之後,請呼叫 IXAudio2SourceVoice::Start() 以播放佇列中的下一個音效。

C++

終止 .wav 檔案

若要判斷 .wav 檔案是否已播放完畢,您需要來源語音的目前狀態。建立 XAUDIO2_VOICE_STATE 結構,然後呼叫 IXAudio2SourceVoice::GetState()。如果音訊已播放完畢,請呼叫 IXAudio2SourceVoice::DestroyVoice()。

C++

另請參閱

XAudio2 概觀 ADPCM 概觀 ADPCM 命令列編碼器
最後修改於 2026年10月16日