加载到内存中的音频文件在播放

时间:2016-02-16 21:45:40

标签: c# monogame naudio

在我的游戏中,我正在使用this article on fire-and-forget sound with NAudio中的提示和代码,使用提供音频文件的提供的AudioPlaybackEngineCachedSoundCachedSoundSampleProvider类光盘并将其样本加载到内存中的float[],通过将其混合到一个始终播放的MixingSampleProvider来播放。

现在,当我的测试播放器精灵跳到空中时,此代码用于播放跳音:

private CachedSound jumpSound;
...
jumpSound = new CachedSound(ContentPackageManager.GetAbsoluteFilePath("nsmbwiiJump"));
...
AudioPlaybackEngine.Instance.PlaySound(jumpSound);

然而,无论是从磁盘还是从内存播放声音,都会在500毫秒左右的延迟后播放声音 - 延迟是相同的。这里出了什么问题?

1 个答案:

答案 0 :(得分:3)

由于引擎盖下WaveOut使用的缓冲持续时间,存在一些延迟。基本上你正在玩一个缓冲区,而另一个缓冲区。所以你落后于至少一个缓冲区的持续时间。 NAudio允许您在初始化WaveOut设备之前配置缓冲区持续时间和缓冲区数。但是,你走的越低,辍学的可能性就越大,这听起来就像是音频中的故障。