Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze voorbeeldtoepassing maakt gebruik van de Core Audio-API's om audiogegevens vast te leggen van een invoerapparaat dat is opgegeven door de gebruiker en schrijft deze naar een uniek benoemd .wav bestand in de huidige map. In dit voorbeeld ziet u gebeurtenisgestuurde buffering.
Dit onderwerp bevat de volgende secties.
- beschrijving
- vereisten
- het voorbeeld downloaden
- de voorbeeld- bouwen
- het voorbeeld uitvoeren
- Verwante onderwerpen
Beschrijving
In dit voorbeeld ziet u de volgende functies.
- MMDevice-API- voor opsomming en selectie van multimediaapparaten.
- WASAPI- voor stroombeheerbewerkingen, zoals het starten en stoppen van de stream en het overschakelen van stromen.
Eisen
| Product | Versie |
|---|---|
| Windows SDK- | Windows 7 |
| Visual Studio | 2008 |
Het voorbeeld downloaden
Dit voorbeeld is beschikbaar op de volgende locaties.
| Plaats | Pad/URL |
|---|---|
| Windows SDK | \Program Files\Microsoft SDK's\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\... |
Het voorbeeld bouwen
Gebruik de volgende stappen om het CaptureSharedEventDriven-voorbeeld te bouwen:
- Open de CMD-shell voor de Windows SDK en ga naar de voorbeeldmap CaptureSharedEventDriven.
- Voer de opdracht
start WASAPICaptureSharedEventDriven.slnuit in de map CaptureSharedEventDriven om het project WASAPICaptureSharedEventDriven te openen in het Visual Studio-venster. - Selecteer in het venster de Debug of Release solution configuration, selecteer het Build menu in de menubalk en selecteer de optie Build. Als u Visual Studio niet opent vanuit de CMD-shell voor de SDK, heeft Visual Studio geen toegang tot de SDK-buildomgeving. In dat geval wordt het voorbeeld niet gebouwd, tenzij u expliciet omgevingsvariabele MSSdk instelt, die wordt gebruikt in het projectbestand WASAPICaptureSharedEventDriven.vcproj.
Het voorbeeld uitvoeren
Als u de demotoepassing bouwt, wordt een uitvoerbaar bestand, WASAPICaptureSharedEventDriven.exe, gegenereerd. Als u het wilt uitvoeren, typt u WASAPICaptureSharedEventDriven in een opdrachtvenster, gevolgd door vereiste of optionele argumenten. In het volgende voorbeeld ziet u hoe u het voorbeeld uitvoert door de opnameduur op te geven op het standaard multimediaapparaat.
WASAPICaptureSharedEventDriven.exe -d 20 -multimedia
In de volgende tabel ziet u de argumenten.
| Argumentatie | Beschrijving |
|---|---|
| -? | Toont help. |
| -h | Toont help. |
| -l | Latentie voor audio-opname in milliseconden. |
| -d | De opnameduur van audio in seconden. |
| -m | Hiermee schakelt u het gebruik van MMCSS uit. |
| -troosten | Gebruik het standaardconsoleapparaat. |
| -communicatie | Gebruik het standaardcommunicatieapparaat. |
| -multimedia | Gebruik het standaard multimediaapparaat. |
| -Eindpunt | Gebruik de eindpunt-id die is opgegeven in de schakelwaarde. |
Als de toepassing zonder argumenten wordt uitgevoerd, worden de beschikbare apparaten opgesomd en wordt de gebruiker gevraagd een apparaat voor de opnamesessie te selecteren. De standaardconsole-, communicatie- en multimediaapparaten worden weergegeven, gevolgd door apparaten en de eindpunt-id's. Als er geen duur is opgegeven, wordt de audiostream van het opgegeven apparaat gedurende 10 seconden vastgelegd. De toepassing schrijft de vastgelegde gegevens naar een uniek benoemd .wav-bestand.
CaptureSharedEventDriven demonstreert gebeurtenisgestuurde buffering. De audioclient die voor dit voorbeeld is geïnstantieerd, is geconfigureerd voor uitvoering in de gedeelde modus en de verwerking van de audiobuffer wordt gemaakt door de AUDCLNT_STREAMFLAGS_EVENTCALLBACK vlag in de aanroep in te stellen op IAudioClient::Initialiseer. In het voorbeeld ziet u hoe de client een gebeurtenishandler voor het systeem moet opgeven door de methode IAudioClient::SetEventHandle aan te roepen. Nadat de opnamesessie is gestart en de stream wordt gestart, geeft de audio-engine de opgegeven gebeurtenisgreep aan om de client telkens te waarschuwen wanneer een buffer gereed is voor verwerking door de client. De audiogegevens kunnen ook worden verwerkt in een timergestuurde lus. Deze modus wordt gedemonstreerd in het captureSharedTimerDriven-voorbeeld .
Verwante onderwerpen