防止重 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
,您将获得一个后台线程为您完成这项工作。 WasapiOut
和 DirectSoundOut
也以这种方式工作。
请记住,如果您不能及时填充缓冲区,您将获得 stuttering/drop 音频输出。因此,如果切换驱动程序模型不适合您,您可能需要优化音频代码,或增加缓冲持续时间。
我正在使用 C# 中的 WPF 和 NAudio 创建一个音频播放器。 每当我的电脑性能低下时,音频就会开始极度滞后,这听起来很糟糕。我注意到对于类似的应用程序,如 Spotify 或 Windows Media Player,情况似乎并非如此。
如何提高音频线程的性能?有没有办法让它优先于其他线程?
编辑:代码
WavePlayer = new WaveOut();
source = new AudioFileReader(Filepath)
WavePlayer.Init(source);
WavePlayer.Play();
默认情况下,在 WinForms / WPF 应用程序中,WaveOut
将使用 UI 线程来填充音频缓冲区。如果您改用 WaveOutEvent
,您将获得一个后台线程为您完成这项工作。 WasapiOut
和 DirectSoundOut
也以这种方式工作。
请记住,如果您不能及时填充缓冲区,您将获得 stuttering/drop 音频输出。因此,如果切换驱动程序模型不适合您,您可能需要优化音频代码,或增加缓冲持续时间。