Udostępnij za pośrednictwem


CaptureSharedEventDriven

Ta przykładowa aplikacja używa podstawowych interfejsów API audio do przechwytywania danych dźwiękowych z urządzenia wejściowego określonego przez użytkownika i zapisuje je w unikatowym pliku .wav w bieżącym katalogu. W tym przykładzie pokazano buforowanie sterowane zdarzeniami.

Ten temat zawiera następujące sekcje.

Opis

W tym przykładzie przedstawiono następujące funkcje.

  • interfejsu API MMDevice dla wyliczenia i wyboru urządzenia multimedialnego.
  • WASAPI na potrzeby operacji zarządzania strumieniem, takich jak uruchamianie i zatrzymywanie strumienia oraz przełączanie strumienia.

Wymagania

Produkt Wersja
zestaw Windows SDK Windows 7
Visual Studio 2008

 

Pobieranie przykładu

Ten przykład jest dostępny w następujących lokalizacjach.

Lokalizacja Ścieżka/adres URL
Windows SDK \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\...

 

Kompilowanie przykładu

Aby utworzyć przykład CaptureSharedEventDriven, wykonaj następujące kroki:

  1. Otwórz powłokę CMD dla zestawu Windows SDK i przejdź do przykładowego katalogu CaptureSharedEventDriven.
  2. Uruchom polecenie start WASAPICaptureSharedEventDriven.sln w katalogu CaptureSharedEventDriven, aby otworzyć projekt WASAPICaptureSharedEventDriven w oknie programu Visual Studio.
  3. W oknie wybierz konfigurację rozwiązania Debugowanie lub Wydania, wybierz menu kompilacji na pasku menu i wybierz opcję Kompilacja. Jeśli program Visual Studio nie zostanie otwarty z poziomu powłoki CMD dla zestawu SDK, program Visual Studio nie będzie miał dostępu do środowiska kompilacji zestawu SDK. W takim przypadku przykład nie zostanie skompilowany, chyba że jawnie ustawisz zmienną środowiskową MSSdk, która jest używana w pliku projektu WASAPICaptureSharedEventDriven.vcproj.

Uruchamianie przykładu

Jeśli aplikacja demonstracyjna zostanie utworzona pomyślnie, zostanie wygenerowany plik wykonywalny WASAPICaptureSharedEventDriven.exe. Aby go uruchomić, wpisz WASAPICaptureSharedEventDriven w oknie polecenia, po którym następują wymagane lub opcjonalne argumenty. W poniższym przykładzie pokazano, jak uruchomić przykład, określając czas trwania przechwytywania na domyślnym urządzeniu multimedialnym.

WASAPICaptureSharedEventDriven.exe -d 20 -multimedia

W poniższej tabeli przedstawiono argumenty.

Argument Opis
-? Pokazuje pomoc.
-h Pokazuje pomoc.
-l Opóźnienie przechwytywania dźwięku w milisekundach.
-d Czas trwania przechwytywania dźwięku w sekundach.
-m Wyłącza korzystanie z programu MMCSS.
-konsola Użyj domyślnego urządzenia konsoli.
-Komunikacji Użyj domyślnego urządzenia komunikacyjnego.
-multimedia Użyj domyślnego urządzenia multimedialnego.
-punkt końcowy Użyj identyfikatora punktu końcowego określonego w wartości przełącznika.

 

Jeśli aplikacja jest uruchamiana bez argumentów, wylicza dostępne urządzenia i monituje użytkownika o wybranie urządzenia na potrzeby sesji przechwytywania. Domyślnie wyświetlane są urządzenia konsolowe, komunikacyjne i multimedialne, a następnie urządzenia i identyfikatory punktów końcowych. Jeśli nie określono czasu trwania, strumień audio z określonego urządzenia jest przechwytywany przez 10 sekund. Aplikacja zapisuje przechwycone dane do unikatowo nazwanego pliku .wav.

CaptureSharedEventDriven demonstruje buforowanie sterowane zdarzeniami. Wystąpienie klienta audio dla tego przykładu jest skonfigurowane do uruchamiania w trybie udostępnionym, a przetwarzanie buforu audio przez klienta jest sterowane zdarzeniami przez ustawienie flagi AUDCLNT_STREAMFLAGS_EVENTCALLBACK w wywołaniu w celu IAudioClient::Initialize. W przykładzie pokazano, jak klient musi zapewnić dojście zdarzeń do systemu przez wywołanie metody IAudioClient::SetEventHandle. Po rozpoczęciu sesji przechwytywania i uruchomieniu strumienia aparat audio sygnalizuje dostarczone dojście zdarzeń w celu powiadomienia klienta za każdym razem, gdy bufor staje się gotowy do przetworzenia przez klienta. Dane audio mogą być również przetwarzane w pętli sterowanej czasomierzem. Ten tryb jest demostrated w przykładzie CaptureSharedTimerDriven.

przykłady zestawu SDK korzystające z podstawowych interfejsów API audio