我尝试使用SoundPlayer类(模拟打字机声音)在每次按键时播放打字声音。
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的打字速度来说足够了)。
有没有更快的播放声音文件的方法,或者问题出在别的地方?
发布于 2019-06-03 01:14:30
按照这种方式,您将在每个KeyDown上创建一个新的SoundPlayer实例,然后每次都需要从磁盘重新加载相同的样本。SoundPlayer类有一个构造函数,它将声音文件的位置作为参数。在这种情况下,您可以重用SoundPlayer实例,并将文件缓存在内存中。我可以想象这会快得多。
下面这样的代码应该能起到作用:
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();
}
在我的例子中,这是更流畅的工作。
https://stackoverflow.com/questions/56416198
复制相似问题