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
In diesem Beispiel werden die folgenden Features veranschaulicht.
- MMDevice-API für Die Aufzählung und Auswahl von Multimediageräten.
- WASAPI für Streamverwaltungsvorgänge wie das Starten und Beenden des Datenstroms und den Streamwechsel.
Produkt | Version |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
Dieses Beispiel ist an den folgenden Speicherorten verfügbar.
Standort | Pfad/URL |
---|---|
Windows SDK | \Programme\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\... |
Führen Sie zum Erstellen des CaptureSharedEventDriven-Beispiels die folgenden Schritte aus:
- Öffnen Sie die CMD-Shell für das Windows SDK, und wechseln Sie zum Beispielverzeichnis CaptureSharedEventDriven.
- Führen Sie den Befehl
start WASAPICaptureSharedEventDriven.sln
im Verzeichnis CaptureSharedEventDriven aus, um das Projekt WASAPICaptureSharedEventDriven im Visual Studio-Fenster zu öffnen. - Wählen Sie im Fenster die Projektmappenkonfiguration Debuggen oder Freigeben aus, wählen Sie in der Menüleiste das Menü Erstellen aus, und wählen Sie 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 WASAPICaptureSharedEventDriven.vcproj verwendet wird.
Wenn Sie die Demoanwendung erfolgreich erstellen, wird eine ausführbare Datei WASAPICaptureSharedEventDriven.exe generiert. Geben WASAPICaptureSharedEventDriven
Sie zum Ausführen in ein Befehlsfenster gefolgt von erforderlichen oder optionalen Argumenten ein. Im folgenden Beispiel wird gezeigt, wie das Beispiel ausgeführt wird, indem Sie die Erfassungsdauer auf dem Standard-Multimediagerät angeben.
WASAPICaptureSharedEventDriven.exe -d 20 -multimedia
Die folgende Tabelle zeigt die Argumente.
Argument | BESCHREIBUNG |
---|---|
-? | Zeigt Hilfe an. |
-H | Zeigt Hilfe an. |
-l | Latenz der Audioaufnahme in Millisekunden. |
-d | Audioaufnahmedauer in Sekunden. |
-M | Deaktiviert die Verwendung von MMCSS. |
-Konsole | Verwenden Sie das Standardkonsolengerät. |
-Kommunikation | Verwenden Sie das Standardkommunikationsgerät. |
-Multimedia | Verwenden Sie das Standard-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 Erfassungssitzung auszuwählen. Die Standardkonsolen-, Kommunikations- und Multimediageräte werden aufgeführt, gefolgt von Geräten und den Endpunktbezeichnern. Wenn keine Dauer angegeben ist, wird der Audiodatenstrom des angegebenen Geräts 10 Sekunden lang aufgezeichnet. Die Anwendung schreibt die erfassten Daten in eine eindeutig benannte WAV-Datei.
CaptureSharedEventDriven veranschaulicht ereignisgesteuerte Pufferung. Der für dieses Beispiel instanziierte Audioclient wird so konfiguriert, dass er im freigegebenen Modus ausgeführt wird, und die Verarbeitung des Audiopuffers des Clients wird ereignisgesteuert, indem das AUDCLNT_STREAMFLAGS_EVENTCALLBACK-Flag im Aufruf von IAudioClient::Initialize festgelegt 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 beginnt und der Stream gestartet wird, signalisiert die Audio-Engine das angegebene Ereignishandle, um den Client jedes Mal zu benachrichtigen, wenn ein Puffer für die Verarbeitung bereit ist. Die Audiodaten können auch in einer timergesteuerten Schleife verarbeitet werden. Dieser Modus wird im Beispiel CaptureSharedTimerDriven demostiert.