我是音频编程的新手,我有一个任务要做,但我不知道怎么做。如果你能引导我朝着正确的方向前进,那对我来说意义重大。
我想通过一个声音设备的所有 channel 播放不同的 mp3 文件,例如在 7.1 卡中,通过所有 8 个单声道。但我想单独控制它们,我的意思是,能够播放、暂停、停止和所有其他标准播放器选项。
我一直在测试 MultiplexingWaveProvider,它工作得很好,但我没有播放或停止音乐等选项。然后我尝试了 Naudio 的 ASIO 驱动程序,试图单独处理每个 channel ,但我最后一次调用 ASIO构造函数覆盖第一个。我怎样才能使它工作?使用 Naudio 或任何其他免费库?
这是我的代码
AsioOut waveOutdevice1 = new AsioOut();
waveOutdevice1.ChannelOffset = -1;
waveOutdevice1.Init(input1);
AsioOut waveOutdevice2 = new AsioOut();
waveOutdevice2.ChannelOffset = 1;
waveOutdevice2.Init(input2);
waveOutdevice1.Play();
waveOutdevice2.Play();
最佳答案
您不能打开多个 AsioOut 实例。您必须提供多 channel 输入。 MultiplexingWaveProvider
是你需要使用的。我不确定您的意思是您没有播放和停止的选项 - 您只需使用 Play。如果您想播放某些 channel 而不播放其他 channel ,那么您将实现另一个 WaveProvider,它可以在从其源读取和输出静音之间切换。换句话说,所有 channel 一直在播放,但其中一些正在播放静音。
关于.net - 单声道多声道播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14989516/