NAudio:在保持声卡打开的同时播放许多音频文件

Posted

技术标签:

【中文标题】NAudio:在保持声卡打开的同时播放许多音频文件【英文标题】:NAudio: Playing many audio files while keeping the sound card opened 【发布时间】:2017-12-02 13:41:21 【问题描述】:

在我的应用程序中,我必须播放许多短音频文件,它们都具有相同的采样率和通道数。我不想经常打开和关闭声卡。

我可以打开一次,然后为每个文件调用WaveOut.Init,然后调用WaveOut.Play。或者我可以使用MixingSampleProvider 解释here(这允许我同时播放多个文件,但我不需要)。

一种方法比另一种更好吗?每种方法的优点/缺点是什么?最后:打开声卡是否会与其他应用程序冲突?

【问题讨论】:

【参考方案1】:

如果您使用 WaveOut 播放具有不同采样率和通道数的文件,只需为每个文件创建一个 WaveOut 的新实例会更容易。否则,您需要使用 MediaFoundationResampler 之类的东西将所有文件重新采样到相同的采样率。

如果您的所有文件都具有相同的采样率和通道数,那么让一个输出设备始终处于打开状态可能会更容易。我建议这样做的一个很好的例子是,如果您在游戏中播放音效。有一个永无止境的MixingSampleProvider 不断播放,然后添加需要播放的声音。这对于短音特别有用。

【讨论】:

活声卡打开我的原因是否与其他应用冲突?例如,它是否保证其他应用程序能够在我的应用程序运行时播放它们的声音? (我在桌面上使用 Windows)。 是的,只要你没有在独占模式下使用 Wasapi 就可以了

以上是关于NAudio:在保持声卡打开的同时播放许多音频文件的主要内容,如果未能解决你的问题,请参考以下文章

NAudio Asio 录制播放和保存(仅限噪音)

C# NAudio 如何强制/硬编码音频设备(声卡)?

使用naudio在播放期间调整字节流

在 UWP 中使用 NAudio 播放多个音频文件

使用 NAudio 录制和播放音频

使用 naudio 动态播放音频文件