5 votes

enregistrement vocal (winmm.dll) en utilisant C#.net

Mon exigence était de construire un utilitaire qui pourrait enregistrer la voix (par le biais du micro) et sauvegarder sur le disque des fichiers .wav en tant qu'application de bureau et web pour des utilisateurs spécifiques. J'ai donc choisi la technologie activeX car je n'ai pas trouvé d'autre meilleur moyen (peut-être que vous le savez et que vous pouvez me guider, ce serait plus que bienvenu).

J'ai utilisé winmm.dll (aka Media control interface (MCI)) et il fonctionne parfaitement bien mais sur des ordinateurs spécifiques comme lorsque je l'exécute sur vista, il fonctionne bien et sur win server 2008 mais sur Windows 2003 et xp il ne fonctionne pas juste fonctionner. y a-t-il un prérequis. qui doit être là ou ce que je dois faire pour le faire fonctionner sur d'autres saveurs de Windows.

Je ne vois pas d'inconvénient à utiliser DirectSound si quelqu'un me recommande un exemple de code pour enregistrer/sauvegarder/jouer un échantillon :)

6voto

Jeff Youel Points 493

J'utiliserais DirectShow pour capturer l'audio. Puisque vous avez ajouté une balise C# à la question, je vous recommande d'utiliser la balise Bibliothèque DirectShow.NET . Assurez-vous de télécharger également le échantillons et regardez les échantillons PlayCap et CapWMV dans le dossier Capture. Vous pouvez également consulter le Article sur la capture audio à CodeProject.

Quant à savoir pourquoi certaines versions du système d'exploitation fonctionnent, avez-vous confirmé sur ces systèmes que l'entrée audio fonctionne avec d'autres programmes ? Permettez-vous à l'utilisateur de sélectionner un périphérique audio ou utilisez-vous simplement le périphérique audio par défaut ? Obtenez-vous un message d'erreur ou simplement pas d'audio ? Par ceci forum assurez-vous de mettre votre nom de fichier entre guillemets.

6voto

Muhammad Adnan Points 534

En fait, il n'y a pas d'erreur, pas d'exception et même pas de fichiers wav de sortie que je crée, alors que cela fonctionne bien sur vista et 2k8 mais pas sur les versions antérieures.

J'utilise la carte son par défaut et je ne configure rien 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);

d'enregistrer

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

pour arrêter et sauver

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

0voto

Padu Merloti Points 1897

Si vous êtes toujours à la recherche d'une bibliothèque .net, regardez ici :

http://windowsmedianet.sourceforge.net/index.html

et ici

http://www.tapiex.com/ToneDecoder.Net.htm

Le premier est sous licence LGPL, le second est une suite de composants commerciaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X