¿Cuál es la forma más sencilla de muestrear continuamente desde la entrada de línea usando C #?

StackOverflow https://stackoverflow.com/questions/228659

Pregunta

Quiero muestrear continuamente desde la línea de audio de mi PC usando C # (luego procesar esos datos). ¿Cuál es la mejor manera de hacer el muestreo?

¿Fue útil?

Solución

Puede realizar una captura de audio (básica) utilizando el código abierto NAudio .NET Audio Library. Eche un vistazo al proyecto NAudioDemo para ver un ejemplo simple de grabación en un archivo WAV utilizando las funciones WaveIn. NAudio ahora también incluye la capacidad de capturar audio usando WASAPI (Windows Vista y superior) y ASIO (si su tarjeta de sonido tiene un controlador ASIO).

Otros consejos

También está la biblioteca Alvas Audio , pero no es gratis, tiene una queja Pantalla si no paga, pero funciona muy bien. Y la documentación es buena y, si encuentra un error o algo, el soporte también está bien.

No hay bibliotecas integradas en el marco .NET para tratar con el sonido, pero si estás en Win32, puedes usar una biblioteca no administrada como DirectSound para hacerlo.

Ianier Munoz muestra cómo escribir un reproductor de audio dúplex completo en C # usando waveIn a través de P / Invoke en CodeProject. Menciona DirectSound administrado como una más método general.

Managed DirectX admite la captura directa de audio y es muy fácil de usar, pero ya no es compatible y se eliminó del DirectX SDK el año pasado. Todavía es posible obteniendo instalando una versión de SDK desde antes de agosto de 2007.

Si bien no cumple estrictamente sus requisitos, un enfoque más sólido sería crear un conjunto de envoltorio de C ++ / CLI alrededor de la API de DirectSound de C ++ nativa, nuevamente desde el DirectX SDK. Esto podría ser llamado directamente desde el código C #. Este es definitivamente un enfoque más poderoso y fácil de mantener, a pesar de que requiere un cierto conocimiento de C ++ y COM.

He usado ambas técnicas en el pasado y ambas funcionan bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top