在我的应用程序中,我必须播放许多短音频文件,这些文件都具有相同的采样率和通道数。我不想经常打开和关闭声卡。
我可以打开一次,然后为每个文件调用WaveOut.Init
,然后调用WaveOut.Play
。或者我可以使用MixingSampleProvider
解释here(这允许我同时播放多个文件,但我不需要这样做。)
一种方法比另一种更好吗?每个人的优点/缺点是什么?最后一点:打开声卡可能会与其他应用程序冲突吗?
答案 0 :(得分:1)
如果您使用WaveOut
播放具有不同采样率和频道数的文件,那么为每个文件创建WaveOut
的新实例会更容易。否则,您需要使用MediaFoundationResampler
之类的内容将所有文件重新采样为相同的采样率。
如果所有文件的采样率和通道数相同,则可能更容易让一个输出设备保持打开状态。我推荐这样做的一个很好的例子就是你在游戏中播放声音效果。有一个永无止境的MixingSampleProvider
正在连续播放,然后添加需要播放的声音。这对于短音来说特别有用。