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
- wymagania dotyczące
- pobieranie przykładowej
- tworzenie przykładu
- uruchamianie przykładowej
- Tematy pokrewne
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:
- Otwórz powłokę CMD dla zestawu Windows SDK i przejdź do przykładowego katalogu CaptureSharedEventDriven.
- Uruchom polecenie
start WASAPICaptureSharedEventDriven.sln
w katalogu CaptureSharedEventDriven, aby otworzyć projekt WASAPICaptureSharedEventDriven w oknie programu Visual Studio. - 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.
Tematy pokrewne
-
przykłady zestawu SDK korzystające z podstawowych interfejsów API audio