2009-05-08 5 views
4

Meine Anforderung war es, ein Dienstprogramm zu bauen, das Stimme aufnehmen konnte (über Mikrofon) und auf Festplatte speichern. WAV-Dateien als Desktop-und Web-App. für bestimmte Benutzer, also wählte ich activeX Technologie, weil ich keinen anderen besseren Weg fand (möglicherweise wissen Sie und kann mich führen .. wäre mehr als Willkommen)Sprachaufzeichnung (winmm.dll) mit C# .net

Ich benutzte winmm.dll (alias Mediensteuerschnittstelle (MCI)) und es funktioniert perfekt gut, aber auf bestimmten Computern wie wenn ich es auf Vista laufen, funktioniert es gut und auf Win Server 2008, aber auf Windows 2003 und XP es funktioniert nicht .. nur arbeiten gibt es keine Voraussetzung .. was benötigt um dort zu sein oder was ich tun sollte, um es mit anderen Aromen von Windows zu arbeiten.

ich nichts dagegen, Directsound in Verwendung, wenn some1 mit einigen Beispielcode empfiehlt aufzeichnen/speichern/play Probe :)

+0

Dies könnte auch ein Problem der DLL nicht in früheren Versionen von Windows vorhanden sein. – Nomad101

Antwort

4

ich Directshow verwenden, würde die Audio-zu erfassen. Da Sie der Frage ein C# -Tag hinzugefügt haben, empfehle ich die Verwendung der DirectShow.NET library. Stellen Sie sicher, dass Sie auch die samples herunterladen und sich die PlayCap- und CapWMV-Beispiele im Capture-Ordner ansehen. Sie können auch die Audio Capture article bei CodeProject auschecken.

Warum einige OS-Versionen funktionieren, haben Sie auf diesen Systemen bestätigt, dass der Audioeingang mit anderen Programmen funktioniert? Ermöglichen Sie dem Benutzer, ein Audiogerät auszuwählen oder nur das Standardaudiogerät zu verwenden? Erhalten Sie eine Fehlermeldung oder nur nicht Audio? Pro diese forum, stellen Sie sicher, dass Sie Ihren Dateinamen in Anführungszeichen umbrechen.

4

Eigentlich kein Fehler, keine Ausnahme und nicht einmal Ausgabe WAV-Dateien, die ich erstellen, während es auf Vista und 2k8 funktioniert, aber keine früheren Versionen.

m mit Standardsoundkarte nicht explizit

mit folgenden Code Einstellung

[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback); 

aufnehmen

mciSendString("open new Type waveaudio Alias recsound", "", 0, 0); 
mciSendString("record recsound", "", 0, 0); 

zu stoppen und

mciSendString(@"save recsound " + OuputFolderName + FileName + ".wav", "", 0, 0); 
mciSendString("close recsound ", "", 0, 0); 
+0

Versuchen Sie, Ihren Dateinamen in Anführungszeichen zu setzen? –