CaptureSharedEventDriven
Diese Beispielanwendung verwendet die Core Audio-APIs, um Audiodaten von einem vom Benutzer angegebenen Eingabegerät zu erfassen und in eine eindeutig benannte WAV-Datei im aktuellen Verzeichnis zu schreiben. In diesem Beispiel wird die ereignisgesteuerte Pufferung veranschaulicht.
Dieses Thema enthält folgende Abschnitte:
- Beschreibung
- Anforderungen
- Herunterladen des Beispiels
- Erstellen des Beispiels
- Ausführen des Beispiels
- Zugehörige Themen
BESCHREIBUNG
In diesem Beispiel werden die folgenden Features veranschaulicht.
- MMDevice-API für multimediale Geräteenumeration und -auswahl.
- WASAPI für Datenstromverwaltungsvorgänge, z. B. starten und beenden des Streams und Streamwechsel.
Requirements (Anforderungen)
| Produkt | Version |
|---|---|
| Windows SDK | Windows 7 |
| Visual Studio | 2008 |
Herunterladen des Beispiels
Dieses Beispiel ist an den folgenden Speicherorten verfügbar.
| Standort | Pfad/URL |
|---|---|
| Windows SDK | \Programme \ Microsoft SDKs \ Windows \ v7.0 \ Samples Multimedia Audio \ \ \ CaptureSharedEventDriven \ ... |
Erstellen des Beispiels
Um das CaptureSharedEventDriven-Beispiel zu erstellen, verwenden Sie die folgenden Schritte:
- Öffnen Sie die CMD-Shell für das Windows SDK, und wechseln Sie zum Beispielverzeichnis CaptureSharedEventDriven.
- Führen Sie den Befehl
start WASAPICaptureSharedEventDriven.slnim Verzeichnis CaptureSharedEventDriven aus, um das Projekt WASAPICaptureSharedEventDriven im fenster Visual Studio zu öffnen. - Wählen Sie im Fenster die Konfiguration Debug- oder Releaselösung aus, wählen Sie in der Menüleiste das Menü Erstellen und dann die Option Erstellen aus. Wenn Sie Visual Studio nicht über die CMD-Shell für das SDK öffnen, haben 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 WASAPICaptureSharedEventDriven.vcproj verwendet wird.
Ausführen des Beispiels
Wenn Sie die Demoanwendung erfolgreich erstellen, wird eine ausführbare Datei WASAPICaptureSharedEventDriven.exe generiert. Geben Sie zum Ausführen WASAPICaptureSharedEventDriven ein Befehlsfenster gefolgt von erforderlichen oder optionalen Argumenten ein. Das folgende Beispiel zeigt, wie das Beispiel ausgeführt wird, indem die Erfassungsdauer auf dem Standardmäßigen 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. |
| -console | Verwenden Sie das Standardkonsolengerät. |
| -communications | Verwenden Sie das Standardkommunikationsgerät. |
| -multimedia | Verwenden Sie das Standardmäßige Multimediagerät. |
| -endpoint | Verwenden Sie den Endpunktbezeichner, der im Switchwert angegeben ist. |
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 Erfassungssitzung auszuwählen. Die Standardkonsole, Kommunikations- und Multimediageräte werden aufgeführt, gefolgt von Geräten und den Endpunktbezeichnern. Wenn keine Dauer angegeben wird, wird der Audiodatenstrom vom angegebenen Gerät 10 Sekunden lang erfasst. 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 für die Ausführung im freigegebenen Modus konfiguriert, und die Verarbeitung des Audiopuffers durch den Client erfolgt ereignisgesteuert, 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 er die IAudioClient::SetEventHandle-Methode aufruft. Nachdem die Aufzeichnungssitzung gestartet und der Stream gestartet wurde, signalisiert die Audio-Engine das angegebene Ereignishandle, um den Client jedes Mal zu benachrichtigen, wenn ein Puffer für die Verarbeitung durch den Client bereit ist. Die Audiodaten können auch in einer zeitgebergesteuerten Schleife verarbeitet werden. Dieser Modus wird im CaptureSharedTimerDriven-Beispiel demostriert.