首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WAV播放后的C# SoundPlayer静态

WAV播放后的C# SoundPlayer静态
EN

Stack Overflow用户
提问于 2012-05-22 00:10:45
回答 2查看 1.8K关注 0票数 1

我使用这段代码从资源中播放WAV文件,并且音频播放正确,但是在播放之后,我得到了一个简短的静态(大约1/2秒):

代码语言:javascript
复制
//System.Media.SystemSounds.Beep.Play();
SoundPlayer sndPlayer = new SoundPlayer();
sndPlayer.Stream = Resources.Notify;
sndPlayer.Play();

如果我取消对上面的System.Media.SystemSounds.Beep.Play()行的注释,那么我的资源中的beep和Notify声音都会正确播放,并且不会是静态的。我尝试过以上代码的几个不同的变体,并且总是得到静态的。我试着使所有变量都是静态的,以防与早期垃圾收集有关,但这并没有帮助。

WAV文件只是我从c:\WINDOWS\Media\ding.wav复制的一个文件(在Windows上),它在Windows中播放得很好。此外,如果我使用新的SoundPlayer("c:\WINDOWS\Media\ding.wav"),它将正确地从文件中播放。

我想这与UnmanagedMemoryStreamResources.Notify有关,也许我需要先将它加载到托管流中?我知道,如果我不使用new Bitmap(Resource.MyPNG)并尝试直接使用Resource.MyPNG,那么可能与WAV资源类似吗?

更新:我最初以为每次播放声音时都会发生这种情况,但现在看来只有在我第一次在应用程序中播放声音时才会发生这种情况。所以也许需要做一些初始化工作?

我也尝试过同样的问题:

代码语言:javascript
复制
SoundPlayer sndPlayer = new SoundPlayer(Resources.Notify);
sndPlayer.Play(); 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-29 15:28:59

只是一台电脑上的一个问题。从来没有发现,其他应用程序似乎没有这个问题,但不值得我的时间,如果只是在1个人电脑(可能15测试)到目前为止。如果我能得到一个更好的答案。

票数 0
EN

Stack Overflow用户

发布于 2012-05-22 00:39:36

这是MS使用My.Audio.Play()的内部实现,看看它们是如何实例化SoundPlayer类的,它们利用了接受filePath的重载构造函数,如下面所示的或流

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

代码语言:javascript
复制
public void Play(string location, AudioPlayMode playMode)
{
    this.ValidateAudioPlayModeEnum(playMode, "playMode");
    SoundPlayer sound = new SoundPlayer(this.ValidateFilename(location));
    this.Play(sound, playMode);
}

在实例化SoundPlayer时,您能尝试传入流吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10694220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档