首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中有比SoundPlayer更快的播放声音的方法吗?

在C#中有比SoundPlayer更快的播放声音的方法吗?
EN

Stack Overflow用户
提问于 2019-06-02 23:00:24
回答 1查看 930关注 0票数 4

我尝试使用SoundPlayer类(模拟打字机声音)在每次按键时播放打字声音。

代码语言:javascript
复制
public void MyKeyDown(object sender, KeyEventArgs)
{
    player = new System.Media.SoundPlayer(@"f:\sounds\2.wav");
    player.Play();
}

它工作得很好。只要你每分钟打字20个左右。再快一点,声音就不会完全播放,甚至完全停止播放,直到你放慢速度

2.wav是一个8kb的声音文件,持续时间为0.1秒,因此仅根据声音持续时间,该文件每分钟可以完整播放600次(对于大约90wpm的打字速度来说足够了)。

有没有更快的播放声音文件的方法,或者问题出在别的地方?

EN

回答 1

Stack Overflow用户

发布于 2019-06-03 01:14:30

按照这种方式,您将在每个KeyDown上创建一个新的SoundPlayer实例,然后每次都需要从磁盘重新加载相同的样本。SoundPlayer类有一个构造函数,它将声音文件的位置作为参数。在这种情况下,您可以重用SoundPlayer实例,并将文件缓存在内存中。我可以想象这会快得多。

下面这样的代码应该能起到作用:

代码语言:javascript
复制
private SoundPlayer soundPlayer;

// Call this on App Startup / Initialization...
private void InitializeSoundPlayer() 
{
  this.soundPlayer = new SoundPlayer("sound.wav");
}

public void MyKeyDown(object sender, KeyEventArgs)
{
    this.soundPlayer.Play();
}

在我的例子中,这是更流畅的工作。

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

https://stackoverflow.com/questions/56416198

复制
相关文章

相似问题

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