7 Stimmen

Empfohlene Methode für die Arbeit mit Audio in .NET-Anwendungen?

Ich versuche, mit einer einfachen Audio-Anwendung unter .NET 3.5 (vorzugsweise in VB.NET, aber wird glücklich C# verwenden) zu starten. Was ich tun möchte, ist:

  • Kontinuierliche Aufzeichnung von Audiodaten von (dem Standard-) Windows-Audioeingabegerät im 8-Bit-pro-Sample-PCM-Format
  • Führen Sie für jedes N Byte eine Analyse der Rohdaten durch (einige RMS- und/oder SPL-Berechnungen - im Grunde das, was Sie für ein hübsches VU-Balkendiagramm benötigen)
  • Wenn das Audiofragment nach der Analyse als interessant eingestuft wird, speichern Sie es in einem komprimierten Dateiformat (z. B. MP3).

Das erste, was ich bemerkte, ist, dass Audio-Unterstützung in der grundlegenden .NET Framework ist so ziemlich nicht vorhanden. Beim Googeln fand ich einige Codebeispiele, meist unter Verwendung von Managed DirectX. Das Fehlen der MSDN-Dokumentation, der Jahrgang der Bibliotheken (2004) und die folgende bedrohliche MDA-Ausnahme in VS.NET 2008 überzeugten mich jedoch, dass dies eine Sackgasse ist:

Message: DLL 'Microsoft.DirectX.dll' is attempting managed execution inside 
OS Loader lock. Do not attempt to run managed code inside a DllMain or image
initialization function since doing so can cause the application to hang.

...was, wie ich glaube, grob übersetzt bedeutet: "Nicht einmal Versuchen Sie um dieses Zeug zu benutzen." Übersehe ich hier etwas, oder ist Managed DirectX wirklich tot? Eine weitere StackOverlow-Frage legt nahe, dass XNA ein Ersatz für Managed DirectX ist, aber es fehlt die Art von Low-Level-Funktionalität, die ich brauche.

Welche API oder Bibliothek eines Drittanbieters ist also für die Audioentwicklung unter .NET tatsächlich nützlich? Die Verwendung von COM-Interop oder P/Invoke ist akzeptabel, solange es einen anständigen .NET-Beispielcode gibt, mit dem man anfangen kann...

4voto

LBushkin Punkte 124894

Haben Sie sich informiert über NAudio auf CodePlex ? Es sieht so aus, als hätte es die Funktionen, die Sie brauchen.

2voto

Dean J Punkte 37317

Ich bin ein Fan der BASS-Bibliothek die eine .NET-API hat.

1voto

Ron Warholic Punkte 9894

Wenn Sie eine DirectX-basierte Soundlösung ausprobieren möchten, können Sie Folgendes verwenden SlimDX . Es unterstützt DirectSound- und XAudio-Schnittstellen.

1voto

DanStory Punkte 371

Eine andere ist FMOD .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X