用于单声道频道的多声道播放器

时间:2013-02-20 20:41:49

标签: .net audio naudio asio

我是音频编程的新手,我有一项任务要做,我不知道如何做。如果你可以指导我朝正确的方向发展,对我来说意义重大。

我想通过一个声音设备的所有频道播放不同的mp3文件,例如在7.1卡中,通过所有8个单声道频道播放。但我想单独控制它们,我的意思是,能够播放,暂停,停止以及其他所有标准播放器选项。

我一直在测试MultiplexingWaveProvider,它工作得很好,但我没有播放或停止音乐等选项。然后我尝试了Naudio的ASIO驱动程序尝试单独解决每个频道,但最后一次调用我make to 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();

1 个答案:

答案 0 :(得分:0)

您无法打开AsioOut的多个实例。您必须提供多通道输入。 MultiplexingWaveProvider是您需要使用的。我不确定你的意思是你没有选择玩和停止 - 你只是使用Play。如果你想播放一些频道而不是其他频道,那么你就可以实现另一个WaveProvider,它可以在从源头读取和输出静音之间切换。换句话说,所有频道都在播放,但其中一些频道正在播放。