防止重cpu负载上的音频滞后

时间:2017-06-12 10:55:06

标签: c# naudio

我正在用C#创建一个带WPF和NAudio的音频播放器。 每当我的电脑性能很低时,音频开始变得非常滞后,这听起来很糟糕。我注意到Spotify或Windows Media Player等类似应用程序似乎并非如此。

如何提高音频线程的性能?有没有办法在其他线程之前给它优先权?

编辑:代码

WavePlayer = new WaveOut();
source = new AudioFileReader(Filepath)
WavePlayer.Init(source);
WavePlayer.Play();

1 个答案:

答案 0 :(得分:2)

默认情况下,在WinForms / WPF应用程序中,WaveOut将使用UI线程填充音频缓冲区。如果您改为使用WaveOutEvent,那么您将获得一个后台线程,为您完成这项工作。 WasapiOutDirectSoundOut也以这种方式工作。

请记住,如果您无法及时填充缓冲区,您将在音频中出现口吃/辍学。因此,如果切换驱动程序模型对您不起作用,则可能需要优化音频代码或增加缓冲区持续时间。