Question

Je suis en utilisant ce code pour lire un fichier WAV à partir d'une ressource, et l'audio est lu correctement, mais puis-je obtenir un court coup de statique après il joue (environ 1/2 seconde):

//System.Media.SystemSounds.Beep.Play();
SoundPlayer sndPlayer = new SoundPlayer();
sndPlayer.Stream = Resources.Notify;
sndPlayer.Play();

Si je décommentez la System.Media.SystemSounds.Beep.Play() la ligne ci-dessus, puis le bip sonore et l'avertissement sonore de mes ressources à la fois jouer correctement, et non statique.J'en ai essayé quelques variations différentes du code ci-dessus, et toujours obtenir la statique.J'ai essayé de faire toutes les variables statiques, au cas où il y avait quelque chose de lié au début de la collecte des ordures, mais cela n'a pas aidé.

Le fichier WAV est juste un que j'ai copié à partir de c:\WINDOWS\Media\ding.wav (sur Windows XP) et il joue bien dans Windows Media Player.Aussi, si j'utilise de nouvelles SoundPlayer("c:\WINDOWS\Media\ding.wav"), il joue correctement à partir du fichier.

J'imagine que ça a quelque chose à voir avec la UnmanagedMemoryStream que Resources.Notify est, et peut-être que j'ai besoin de le charger à une gestion de flux en premier?Je sais que j'ai eu des problèmes avec les fichiers PNG si je ne l'utilise pas new Bitmap(Resource.MyPNG) et essayez de l'utiliser Resource.MyPNG directement au lieu de cela, alors peut-être quelque chose de similaire avec WAV ressources?

Mise à jour : J'ai d'abord pensé que c'était la même chose à chaque fois que le son joué, mais maintenant il semble qu'il ne se produit la première fois que je joue le son dans mon application.Alors peut-être que certains d'initialisation qui doit être fait?

J'ai aussi essayé ce, même problème:

SoundPlayer sndPlayer = new SoundPlayer(Resources.Notify);
sndPlayer.Play(); 
Était-ce utile?

La solution 2

C'était juste un problème sur un PC.Jamais compris, et d'autres applications ne semblent pas avoir ce problème, mais pas la peine de mon temps si que sur 1 PC (de peut-être 15 testés jusqu'à présent.Fera rapport une meilleure réponse si j'arrive à en obtenir un.

Autres conseils

C'est la mise en œuvre interne de la sp utiliser Mon.L'Audio.Play(), de voir comment ils instancier la SoundPlayer classe, ils profitent de la surcharge de constructeur qui prend un chemin d'accès comme indiqué ci-dessous ou un cours d'eau:

http://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspx

public void Play(string location, AudioPlayMode playMode)
{
    this.ValidateAudioPlayModeEnum(playMode, "playMode");
    SoundPlayer sound = new SoundPlayer(this.ValidateFilename(location));
    this.Play(sound, playMode);
}

Pouvez-vous essayer de passer dans un flux de données lors de l'instanciation de la SoundPlayer?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top