xiph filtros windows winapi audio directshow

windows - filtros - Cómo capturar datos PCM de Wave Out



directshow xiph (2)

¿Cómo sería posible capturar el audio mediante programación? Estoy implementando una aplicación que transmite en tiempo real el escritorio en la red. La parte del video está terminada. Necesito implementar la parte de audio. Necesito una manera de obtener datos de PCM de la tarjeta de sonido para alimentar mi codificador (implementado con Windows Media Format).

Creo que la respuesta está relacionada con las funciones de openMixer (), waveInOpen () en la API de Win32, pero no estoy seguro de qué hacer exactamente.

¿Cómo abrir el canal necesario y cómo leer datos PCM desde él?

Gracias por adelantado.


No creo que haya una manera directa de hacer esto usando el sistema operativo, es una característica que puede (o no) estar presente en la tarjeta de sonido. Algunas tarjetas de sonido tienen una interfaz loopback: Creative lo llama "What U Hear". Simplemente seleccione esto como la entrada en lugar de como el micrófono, y grabe desde allí con el waveInOpen () normal que ya conoce.

Si la tarjeta de sonido no tiene esta característica, entonces creo que no tienes más suerte que hacer algo tan loco como hacer tu propio driver. O podría convencer a sus usuarios para que ejecuten un cable desde la salida del parlante hasta la entrada de línea :)


Las nuevas API de Windows Vista Core Audio tienen soporte para esto explícitamente (llamado grabación de bucle invertido), por lo que si puede vivir con una aplicación de Vista solamente, este es el camino a seguir.

Consulte el artículo de Grabación en bucle en MSDN para obtener instrucciones sobre cómo hacerlo.