CaptureSharedEventDriven
Esta aplicación de ejemplo usa core Audio API para capturar datos de audio de un dispositivo de entrada especificado por el usuario y lo escribe en un archivo .wav con nombre único en el directorio actual. En este ejemplo se muestra el almacenamiento en búfer controlado por eventos.
En este tema se incluyen las siguientes secciones.
- Descripción
- Requisitos
- Descarga del ejemplo
- Creación del ejemplo
- Ejecutar el ejemplo
- Temas relacionados
Descripción
En este ejemplo se muestran las siguientes características.
- MMDevice API para enumeración y selección de dispositivos multimedia.
- WASAPI para operaciones de administración de flujos, como iniciar y detener la secuencia, y el cambio de flujo.
Requisitos
Producto | Versión |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
Descarga del ejemplo
Este ejemplo está disponible en las siguientes ubicaciones.
Location | Ruta de acceso y dirección URL |
---|---|
Windows SDK | \Archivos de programa\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\... |
Generar el ejemplo
Para compilar el ejemplo CaptureSharedEventDriven, siga estos pasos:
- Abra el shell de CMD para Windows SDK y cambie al directorio de ejemplo CaptureSharedEventDriven.
- Ejecute el comando
start WASAPICaptureSharedEventDriven.sln
en el directorio CaptureSharedEventDriven para abrir el proyecto WASAPICaptureSharedEventDriven en la ventana de Visual Studio. - En la ventana, seleccione la configuración de la solución Depurar o Liberar , seleccione el menú Compilar en la barra de menús y seleccione la opción Compilar . Si no abre Visual Studio desde el shell de CMD para el SDK, Visual Studio no tendrá acceso al entorno de compilación del SDK. En ese caso, el ejemplo no se compilará a menos que establezca explícitamente la variable de entorno MSSdk, que se usa en el archivo del proyecto, WASAPICaptureSharedEventDriven.vcproj.
Ejecutar el ejemplo
Si compila correctamente la aplicación de demostración, se genera un archivo ejecutable, WASAPICaptureSharedEventDriven.exe. Para ejecutarlo, escriba WASAPICaptureSharedEventDriven
una ventana de comandos seguida de argumentos obligatorios o opcionales. En el ejemplo siguiente se muestra cómo ejecutar el ejemplo especificando la duración de captura en el dispositivo multimedia predeterminado.
WASAPICaptureSharedEventDriven.exe -d 20 -multimedia
En la tabla siguiente se muestran los argumentos.
Argumento | Descripción |
---|---|
-? | Muestra ayuda. |
-H | Muestra ayuda. |
-l | Latencia de captura de audio en milisegundos. |
-d | Duración de la captura de audio en segundos. |
-M | Deshabilita el uso de MMCSS. |
-Consola | Use el dispositivo de consola predeterminado. |
-Comunicaciones | Use el dispositivo de comunicación predeterminado. |
-Multimedia | Usa el dispositivo multimedia predeterminado. |
-Extremo | Use el identificador de punto de conexión especificado en el valor del modificador. |
Si la aplicación se ejecuta sin argumentos, enumera los dispositivos disponibles y solicita al usuario que seleccione un dispositivo para la sesión de captura. Los dispositivos de consola, comunicación y multimedia predeterminados se muestran seguidos de los dispositivos y los identificadores de punto de conexión. Si no se especifica ninguna duración, la secuencia de audio del dispositivo especificado se captura durante 10 segundos. La aplicación escribe los datos capturados en un archivo .wav con nombre único.
CaptureSharedEventDriven muestra el almacenamiento en búfer controlado por eventos. El cliente de audio creado para este ejemplo está configurado para ejecutarse en modo compartido y el procesamiento del cliente del búfer de audio se realiza controlado por eventos estableciendo la marca AUDCLNT_STREAMFLAGS_EVENTCALLBACK en la llamada a IAudioClient::Initialize. En el ejemplo se muestra cómo el cliente debe proporcionar un identificador de evento al sistema mediante una llamada al método IAudioClient::SetEventHandle . Una vez que se inicia la sesión de captura y se inicia la secuencia, el motor de audio señala al controlador de eventos proporcionado para notificar al cliente cada vez que un búfer está listo para que el cliente procese. Los datos de audio también se pueden procesar en un bucle controlado por temporizador. Este modo se muestra en el ejemplo CaptureSharedTimerDriven .
Temas relacionados