Freigeben über


Vorgehensweise: Wiedergeben eines Sounds mit XAudio2

In diesem Thema werden die erforderlichen Mindestschritte beschrieben, um zuvor geladene Audiodaten in XAudio2 wiederzugeben.

Nachdem Sie XAudio2 initialisiert (siehe Vorgehensweise: Initialisieren von XAudio2) und die Audiodaten geladen haben (siehe Vorgehensweise: Laden von Audiodateien in XAudio2), können Sie einen Sound wiedergeben, indem Sie eine Quellstimme erstellen und Audiodaten an diese übergeben.

So spielen Sie einen Sound ab

  1. Initialisieren Sie zunächst XAudio2 für die Audiowiedergabe, indem Sie die unter Vorgehensweise: Initialisieren von XAudio2 beschriebenen Schritte ausführen.

  2. Füllen Sie dann eine WAVEFORMATEX-Struktur und eine XAUDIO2_BUFFER-Struktur aus, indem Sie die unter Vorgehensweise: Laden von Audiodatendateien in XAudio2 beschriebenen Schritte ausführen.

    Hinweis

    Je nach Format der Audiodaten müssen Sie möglicherweise eine größere Datenstruktur (eine mit einer WAVEFORMATEX-Struktur) anstelle einer WAVEFORMATEX verwenden. Weitere Informationen finden Sie im Thema WAVEFORMATEX.

  3. Rufen Sie als Nächstes die IXAudio2::CreateSourceVoice-Methode auf, um die Quellstimme zu erstellen. Dadurch erhalten Sie einen Zeiger auf eine IXAudio2SourceVoice-Schnittstelle. Das Format der Stimme wird durch die in der WAVEFORMATEX-Struktur festgelegten Werte angegeben.

    IXAudio2SourceVoice* m_pXAudio2SourceVoice{};
    ...
    winrt::check_hresult(m_xAudio2->CreateSourceVoice(&m_pXAudio2SourceVoice, (WAVEFORMATEX*)&wfx)));    
    
  4. Übermitteln Sie einen XAUDIO2_BUFFER an die Quellstimme, indem Sie die IXAudio2SourceVoice::SubmitSourceBuffer-Methode aufrufen.

    winrt::check_hresult(m_pXAudio2SourceVoice->SubmitSourceBuffer(&xAudio2Buffer));
    

    Hinweis

    Die Audiobeispieldaten, auf die der pBuffer-Parameter von SubmitSourceBuffer verweist, gehört weiterhin der App, und sie müssen zugewiesen und zugänglich bleiben, bis die Wiedergabe des Sounds beendet wird.

  5. Rufen Sie zum Starten der Quellstimme die IXAudio2SourceVoice::Start-Methode auf. Da alle XAudio2-Stimmen ihre Ausgabe standardmäßig an die Masterstimme senden, wird Audio aus der Quellstimme automatisch zum Audiogerät übertragen, das bei der Initialisierung erstellt/ausgewählt wurde. In einem komplizierteren Audiodiagramm muss die Quellstimme angeben, an welche Stimme ihre Ausgabe gesendet werden soll.

    winrt::check_hresult(m_pXAudio2SourceVoice->Start(0));
    

Intelligente Zeiger

Für Sicherheit und Komfort können Sie einen intelligenten Zeiger für die IXAudio2-Schnittstelle verwenden. Die Sprachschnittstellen (z. B. IXAudio2MasteringVoice) verfügen jedoch nicht über eine Release-Methode , daher wird ein Buildfehler angezeigt, wenn Sie versuchen, einen intelligenten Zeiger für diese zu verwenden. In diesen Codeausschnitten verwenden wir nach Möglichkeit einen intelligenten Zeiger und bei Bedarf einen unformatierten Zeiger.