Quel est le moyen le plus simple d’échantillonner en continu à partir de l’entrée de ligne en utilisant C #

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

Question

Je souhaite échantillonner en continu à partir de la ligne audio de mon ordinateur en utilisant C # (puis traiter ces données). Quelle est la meilleure façon de faire l’échantillonnage?

Était-ce utile?

La solution

Vous pouvez effectuer des captures audio (de base) à l'aide de la source audio de NAudio . Examinez le projet NAudioDemo pour voir un exemple simple d’enregistrement dans un fichier WAV à l’aide des fonctions WaveIn. NAudio offre également la possibilité de capturer du son à l’aide de WASAPI (Windows Vista et supérieur) et ASIO (si votre carte son est dotée d’un pilote ASIO).

Autres conseils

Il existe également la bibliothèque Alvas Audio , qui est non seulement gratuite, mais persistante. écran si vous ne payez pas, mais fonctionne à merveille. Et la documentation est agréable et, si vous trouvez un bug ou quelque chose, le support est bon aussi.

Il n'y a pas de bibliothèque intégrée dans le framework .NET pour gérer le son, mais si vous êtes sur Win32, vous pouvez utiliser une bibliothèque non gérée comme DirectSound pour le faire.

Ianier Munoz montre comment écrire un lecteur audio en duplex intégral en C # en utilisant waveIn via P / Invoke sur CodeProject. Il mentionne DirectSound géré en tant que plus méthode générale.

Directement géré prend en charge la capture directe de l’audio et est très facile à utiliser, mais n’est plus pris en charge et a été supprimé du SDK de DirectX l’année dernière. Il est toujours possible de l'obtenir en installant une version du SDK antérieure à août 2007.

Sans répondre strictement à vos exigences, une approche plus robuste consisterait à créer un assembly wrapper C ++ / CLI autour de l’API C ++ DirectSound native, à nouveau à partir du Kit de développement logiciel DirectX. Ceci pourrait alors être appelé directement à partir du code C #. Il s’agit là d’une approche nettement plus puissante et facile à gérer, même si elle nécessite quelques connaissances de C ++ et de COM.

J'ai utilisé ces deux techniques par le passé et elles fonctionnent bien toutes les deux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top