Was ist der einfachste Weg, kontinuierlich aus dem Line-In mit C # zu probieren?

8

Ich möchte fortlaufend von der Audioleitung meines PCs mit C # abtasten (dann diese Daten verarbeiten). Was ist der beste Weg zur Probenahme?

    
yxk 23.10.2008, 05:45
quelle

4 Antworten

3

Sie können einige (grundlegende) Audioaufnahmen mit der Open-Source-Audio-Bibliothek NAudio machen. Sehen Sie sich das NAudioDemo-Projekt an, um ein einfaches Beispiel für die Aufnahme in eine WAV-Datei mit den WaveIn-Funktionen zu sehen. NAudio bietet jetzt auch die Möglichkeit, Audio mit WASAPI (Windows Vista und höher) und ASIO (wenn Ihre Soundkarte einen ASIO-Treiber hat) zu erfassen.

    
Mark Heath 23.10.2008, 07:39
quelle
2

Es gibt auch die Alvas-Audio -Bibliothek, die nicht kostenlos ist, hat einen nagenden Bildschirm, wenn Sie dies nicht tun bezahlen, aber funktioniert wunderbar. Und die Dokumentation ist nett und, wenn Sie einen Fehler oder etwas finden, ist die Unterstützung auch in Ordnung.

    
Vinko Vrsalovic 23.10.2008 06:26
quelle
2

Es gibt keine integrierten Bibliotheken im .NET-Framework für den Umgang mit Sound, aber wenn Sie unter Win32 sind, können Sie dafür eine nicht verwaltete Bibliothek wie DirectSound verwenden.

Ianier Munoz zeigt So schreiben Sie einen Vollduplex-Audioplayer in C # mit waveIn über P / Invoke in CodeProject. Er erwähnt Managed DirectSound als eine allgemeinere Methode.

>     
Jacob Krall 23.10.2008 06:04
quelle
1

Managed DirectX unterstützt die direkte Erfassung von Audiodaten und ist sehr einfach zu verwenden, wird jedoch nicht mehr unterstützt und wurde letztes Jahr aus dem DirectX-SDK entfernt. Es ist immer noch möglich zu installieren eine SDK-Version von vor August 2007.

Wenn Sie Ihre Anforderungen nicht genau erfüllen, wäre ein robusterer Ansatz, eine C ++ / CLI-Wrapper-Assembly um die native C ++ DirectSound-API zu erstellen, wiederum aus dem DirectX-SDK. Dies könnte dann direkt aus dem C # -Code aufgerufen werden. Dies ist definitiv ein leistungsfähiger und wartungsfreundlicher Ansatz, obwohl einige Kenntnisse von C ++ und COM erforderlich sind.

Ich habe beide Techniken in der Vergangenheit verwendet und beide funktionieren gut.

    
Stu Mackellar 23.10.2008 10:38
quelle