防止重 cpu 负载下的音频延迟

Prevent audio lags on heavy cpu load

我正在使用 C# 中的 WPF 和 NAudio 创建一个音频播放器。 每当我的电脑性能低下时,音频就会开始极度滞后,这听起来很糟糕。我注意到对于类似的应用程序,如 Spotify 或 Windows Media Player,情况似乎并非如此。

如何提高音频线程的性能?有没有办法让它优先于其他线程?

编辑:代码

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

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

请记住,如果您不能及时填充缓冲区,您将获得 stuttering/drop 音频输出。因此,如果切换驱动程序模型不适合您,您可能需要优化音频代码,或增加缓冲持续时间。