Share via


使用方法:使用 XAudio2 播放音效

本主題描述在 XAudio2 中播放先前載入音訊資料所需的最小步驟。 初始化 XAudio2 (請參閱 如何:初始化 XAudio2) 並載入音訊資料 (請參閱 如何:如何:在 XAudio2) 載入音訊資料檔案 ,您可以藉由建立來源語音並將音訊資料傳遞給它來播放音效。

播放音效

  1. 依照 如何:初始化 XAudio2 中所述的步驟,初始化 XAudio2引擎。

  2. 依照如何:在 XAudio2 中載入音訊資料檔案中所述的步驟,填入XAUDIO2_BUFFER結構。

    注意

    視音訊資料的格式而定,您可能需要使用較大的資料結構,其中包含 一個使用一個包含一個其一個的顯示方式,以取代一個使用一個顯示方式顯示方式。 如需詳細資訊,請參閱 「要求」 參考頁面。

     

  3. 在 XAudio2 引擎的實例上呼叫 IXAudio2::CreateSourceVoice 方法來建立來源語音。 語音的格式是由 在顯示于其 STRUCTUREATEX 結構中的值所指定。

    IXAudio2SourceVoice* pSourceVoice;
    if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
    
  4. 使用函式 SubmitSourceBuffer將XAUDIO2_BUFFER提交至來源語音。

    if( FAILED(hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) )
        return hr;
    

    注意

    應用程式仍然擁有 緩衝區 點的音訊範例資料,必須保持配置且可存取,直到音效停止播放為止。

     

  5. 使用 Start 函式來啟動來源語音。 由於所有 XAudio2 語音預設都會將其輸出傳送到主控語音,因此來源語音的音訊會自動變成在初始化時選取的音訊裝置。 在更複雜的音訊圖形中,來源語音必須指定其輸出應傳送到其中的語音。

    if ( FAILED(hr = pSourceVoice->Start( 0 ) ) )
        return hr;
    

Windows 市集應用程式的注意事項

我們建議您使用 智慧型指標 ,以例外狀況安全的方式管理 XAUDIO2 物件的存留期。 針對 Windows 市集應用程式,您可以使用來自 Windows 執行階段 C++ 樣板庫 (WRL) 的 ComPtr智慧型指標範本。

Microsoft::WRL::ComPtr<IXAudio2SourceVoice> SourceVoice;
HRESULT hr;
if( FAILED(hr = pXAudio2->CreateSourceVoice( &SourceVoice, (WAVEFORMATEX*)&wfx ) ) )
    throw Platform::Exception::CreateException(hr); 

if( FAILED(hr = SourceVoice->SubmitSourceBuffer( &buffer ) ) )
    throw Platform::Exception::CreateException(hr); 

if ( FAILED(hr = SourceVoice->Start( 0 ) ) )
    throw Platform::Exception::CreateException(hr);

注意

在釋放 IXAudio2 物件之前,請確定已完全釋放 XAUDIO2 物件的所有智慧型指標。

 

XAudio2 消費者入門

使用方法:初始化 XAudio2

使用方法:在 XAudio2 中載入音訊資料檔