Condividi tramite


CaptureSharedEventDriven

Questa applicazione di esempio usa le API Audio principali per acquisire dati audio da un dispositivo di input specificato dall'utente e scriverlo in un file .wav denominato in modo univoco nella directory corrente. Questo esempio illustra il buffering guidato dagli eventi.

Questo argomento include le sezioni seguenti.

Descrizione

In questo esempio vengono illustrate le funzionalità seguenti.

  • API MMDevice per l'enumerazione e la selezione dei dispositivi multimediali.
  • WASAPI per operazioni di gestione dei flussi, ad esempio l'avvio e l'arresto del flusso e il cambio di flusso.

Requisiti

Prodotto Versione
Windows SDK Windows 7
Visual Studio 2008

 

Download dell'esempio

Questo esempio è disponibile nelle posizioni seguenti.

Ufficio Percorso/URL
Windows SDK \Programmi\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\...

 

Compilazione dell'esempio

Per compilare l'esempio CaptureSharedEventDriven, seguire questa procedura:

  1. Aprire la shell CMD per Windows SDK e passare alla directory di esempio CaptureSharedEventDriven.
  2. Eseguire il comando start WASAPICaptureSharedEventDriven.sln nella directory CaptureSharedEventDriven per aprire il progetto WASAPICaptureSharedEventDriven nella finestra di Visual Studio.
  3. Nella finestra selezionare la configurazione della soluzione Debug o Rilascio , selezionare il menu Compila dalla barra dei menu e selezionare l'opzione Compila . Se Visual Studio non viene aperto dalla shell CMD per l'SDK, Visual Studio non avrà accesso all'ambiente di compilazione DELL'SDK. In tal caso, l'esempio non verrà compilato a meno che non si imposti in modo esplicito la variabile di ambiente MSSdk, che viene usata nel file di progetto, WASAPICaptureSharedEventDriven.vcproj.

Esecuzione dell'esempio

Se si compila correttamente l'applicazione demo, viene generato un file eseguibile WASAPICaptureSharedEventDriven.exe. Per eseguirlo, digitare WASAPICaptureSharedEventDriven in una finestra di comando seguita da argomenti obbligatori o facoltativi. Nell'esempio seguente viene illustrato come eseguire l'esempio specificando la durata dell'acquisizione nel dispositivo multimediale predefinito.

WASAPICaptureSharedEventDriven.exe -d 20 -multimedia

La tabella seguente illustra gli argomenti.

Argomento Descrizione
-? Mostra la Guida.
-h Mostra la Guida.
-l Latenza di acquisizione audio in millisecondi.
-d Durata dell'acquisizione audio in secondi.
-m Disabilita l'uso di MMCSS.
-Console Usare il dispositivo console predefinito.
-Comunicazioni Usare il dispositivo di comunicazione predefinito.
-Multimediale Usa il dispositivo multimediale predefinito.
-Endpoint Usare l'identificatore dell'endpoint specificato nel valore switch.

 

Se l'applicazione viene eseguita senza argomenti, enumera i dispositivi disponibili e chiede all'utente di selezionare un dispositivo per la sessione di acquisizione. La console predefinita, le comunicazioni e i dispositivi multimediali sono elencati dai dispositivi e dagli identificatori dell'endpoint. Se non viene specificata alcuna durata, il flusso audio dal dispositivo specificato viene acquisito per 10 secondi. L'applicazione scrive i dati acquisiti in un file .wav denominato in modo univoco.

CaptureSharedEventDriven illustra il buffering guidato dagli eventi. Il client audio di cui è stata creata un'istanza per questo esempio è configurato per l'esecuzione in modalità condivisa e l'elaborazione del buffer audio viene eseguita in base all'impostazione del flag AUDCLNT_STREAMFLAGS_EVENTCALLBACK nella chiamata a IAudioClient::Initialize. L'esempio mostra come il client deve fornire un handle di evento al sistema chiamando il metodo IAudioClient::SetEventHandle. Dopo l'avvio della sessione di acquisizione e l'avvio del flusso, il motore audio segnala l'handle dell'evento fornito per notificare al client ogni volta che un buffer diventa pronto per l'elaborazione del client. I dati audio possono essere elaborati anche in un ciclo basato su timer. Questa modalità viene abbassata di livello nell'esempio CaptureSharedTimerDriven .

Esempi di SDK che usano le API audio principali