Freigeben über


CaptureSharedEventDriven

Diese Beispielanwendung verwendet die Core Audio-APIs, um Audiodaten von einem vom Benutzer angegebenen Eingabegerät aufzunehmen und in eine eindeutig benannte .wav Datei im aktuellen Verzeichnis zu schreiben. In diesem Beispiel wird die ereignisgesteuerte Pufferung veranschaulicht.

Dieses Thema enthält die folgenden Abschnitte.

Beschreibung

In diesem Beispiel werden die folgenden Features veranschaulicht.

  • MMDevice-API für die Enumeration und Auswahl von Multimediageräten.
  • WASAPI- für Datenstromverwaltungsvorgänge, z. B. Starten und Beenden des Datenstroms und Streamwechsel.

Anforderungen

Produkt Version
Windows SDK- Windows 7
Visual Studio 2008

 

Herunterladen des Beispiels

Dieses Beispiel ist an den folgenden Speicherorten verfügbar.

Ort Pfad/URL
Windows SDK \Programme\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\...

 

Erstellen des Beispiels

Führen Sie die folgenden Schritte aus, um das CaptureSharedEventDriven-Beispiel zu erstellen:

  1. Öffnen Sie die CMD-Shell für das Windows SDK, und wechseln Sie in das CaptureSharedEventDriven-Beispielverzeichnis.
  2. Führen Sie den Befehl start WASAPICaptureSharedEventDriven.sln im Verzeichnis CaptureSharedEventDriven aus, um das WASAPICaptureSharedEventDriven-Projekt im Visual Studio-Fenster zu öffnen.
  3. Wählen Sie im Fenster die Debug- oder Release Lösungskonfiguration aus, wählen Sie das Menü Erstellen in der Menüleiste und dann die Option Erstellen aus. Wenn Sie Visual Studio nicht über die CMD-Shell für das SDK öffnen, hat Visual Studio keinen Zugriff auf die SDK-Buildumgebung. In diesem Fall wird das Beispiel nur erstellt, wenn Sie die Umgebungsvariable MSSdk explizit festlegen, die in der Projektdatei verwendet wird, WASAPICaptureSharedEventDriven.vcproj.

Ausführen des Beispiels

Wenn Sie die Demoanwendung erfolgreich erstellen, wird eine ausführbare Datei WASAPICaptureSharedEventDriven.exegeneriert. Geben Sie zum Ausführen WASAPICaptureSharedEventDriven in ein Befehlsfenster ein, gefolgt von erforderlichen oder optionalen Argumenten. Das folgende Beispiel zeigt, wie Das Beispiel ausgeführt wird, indem die Aufnahmedauer auf dem Standard-Multimediagerät angegeben wird.

WASAPICaptureSharedEventDriven.exe -d 20 -multimedia

In der folgenden Tabelle sind die Argumente aufgeführt.

Argument Beschreibung
-? Zeigt Hilfe an.
-h Zeigt Hilfe an.
-l Audioaufnahmelatenz in Millisekunden.
-d Dauer der Audioaufnahme in Sekunden.
-m Deaktiviert die Verwendung von MMCSS.
-Konsole Verwenden Sie das Standardkonsolengerät.
-Kommunikationen Verwenden Sie das Standardkommunikationsgerät.
-Multimedia Verwenden Sie das Standardmäßige Multimediagerät.
-Endpunkt Verwenden Sie den im Switchwert angegebenen Endpunktbezeichner.

 

Wenn die Anwendung ohne Argumente ausgeführt wird, listet sie die verfügbaren Geräte auf und fordert den Benutzer auf, ein Gerät für die Aufnahmesitzung auszuwählen. Die Standardkonsole, Kommunikation und Multimediageräte werden gefolgt von Geräten und den Endpunkt-IDs aufgeführt. Wenn keine Dauer angegeben ist, wird der Audiodatenstrom des angegebenen Geräts 10 Sekunden lang aufgenommen. Die Anwendung schreibt die erfassten Daten in eine eindeutig benannte .wav Datei.

CaptureSharedEventDriven veranschaulicht die ereignisgesteuerte Pufferung. Der für dieses Beispiel instanziierte Audioclient ist so konfiguriert, dass er im freigegebenen Modus ausgeführt wird und die Verarbeitung des Audiopuffers vom Client ereignisgesteuert wird, indem das AUDCLNT_STREAMFLAGS_EVENTCALLBACK Flag im Aufruf von IAudioClient::Initializefestgelegt wird. Das Beispiel zeigt, wie der Client ein Ereignishandle für das System bereitstellen muss, indem die IAudioClient::SetEventHandle--Methode aufgerufen wird. Nachdem die Aufnahmesitzung gestartet und der Datenstrom gestartet wurde, signalisiert das Audiomodul den bereitgestellten Ereignishandle, um den Client jedes Mal zu benachrichtigen, wenn ein Puffer für den Client verarbeitet werden kann. Die Audiodaten können auch in einer zeitgesteuerten Schleife verarbeitet werden. Dieser Modus wird im Beispiel CaptureSharedTimerDriven demostiert.

SDK-Beispiele, die die kernigen Audio-APIs