2009-05-08 5 views
4

Mon exigence était de construire un utilitaire qui pourrait enregistrer la voix (via micro) et enregistrer sur les fichiers .wav de disque comme bureau et application web. pour des utilisateurs spécifiques donc j'ai choisi la technologie activeX car je n'ai pas trouvé d'autre moyen (peut être vous savez et peut me guider .. serait plus que bienvenu)enregistrement vocal (winmm.dll) en utilisant C# .net

J'ai utilisé winmm.dll (aka Interface de contrôle de médias (MCI)) et ça marche parfaitement bien mais sur des ordinateurs spécifiques comme quand je le lance sur vista, ça marche bien et sur win server 2008 mais sur windows 2003 et xp ça ne marche pas .. il n'y a pas de préreq qui marche ... qui a besoin être là ou ce que je devrais faire pour le faire fonctionner sur d'autres saveurs de fenêtres.

Je ne me dérange pas à utiliser DirectSound si some1 recommande avec quelques exemples de code pour enregistrer/enregistrer/sample play :)

+0

Cela peut également être un problème de DLL qui n'existe pas dans les versions antérieures de Windows. – Nomad101

Répondre

4

J'utiliser DirectShow pour capturer l'audio. Depuis que vous avez ajouté un tag C# à la question, je recommande d'utiliser le DirectShow.NET library. Assurez-vous également de télécharger le samples et de regarder les exemples PlayCap et CapWMV dans le dossier Capture. Vous pouvez également vérifier le Audio Capture article à CodeProject.

Pour savoir pourquoi certaines versions d'OS fonctionnent, avez-vous confirmé sur ces systèmes que l'entrée audio fonctionne avec d'autres programmes? Autorisez-vous l'utilisateur à sélectionner un périphérique audio ou simplement à utiliser le périphérique audio par défaut? Recevez-vous un message d'erreur ou tout simplement pas d'audio? Par ce forum, assurez-vous d'envelopper votre nom de fichier entre guillemets.

4

En fait, pas d'erreur, pas d'exception et même pas de sortie des fichiers wav que je crée, alors que cela fonctionne bien sur les versions vista et 2k8 mais pas les versions précédentes.

m en utilisant la carte son par défaut ne fixant aucune explicitement

en utilisant le code suivant

[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); 

pour enregistrer

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

pour arrêter et sauvegarder

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

Essayez d'envelopper votre nom de fichier entre guillemets doubles? –

Questions connexes