单声道多声道播放器
Posted
技术标签:
【中文标题】单声道多声道播放器【英文标题】:Multichannel player for mono channels 【发布时间】:2013-02-20 20:41:48 【问题描述】:我是音频编程的新手,我有一个任务要做,但我不知道该怎么做。如果你能指引我正确的方向,那对我来说意义重大。
我想通过一个声音设备的所有通道播放不同的 mp3 文件,例如在 7.1 卡中,通过所有 8 个单声道。但我想单独控制它们,我的意思是,能够播放、暂停、停止和所有其他标准播放器选项。
我一直在测试 MultiplexingWaveProvider,它工作得很好,但我没有播放或停止音乐等选项。然后我尝试了 Naudio 的 ASIO 驱动程序,试图单独处理每个通道,但最后一次调用我使 ASIO 构造函数覆盖第一个。我怎样才能使它工作?使用 Nadio 或任何其他免费库?
这是我的代码
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】:您无法打开多个 AsioOut 实例。您必须提供多通道输入。 MultiplexingWaveProvider
是您需要使用的。我不确定你的意思是你没有播放和停止的选项 - 你只是使用播放。如果您想播放某些频道而不播放其他频道,那么您将实现另一个 WaveProvider,它可以在从其源读取和输出静音之间切换。换句话说,所有频道一直在播放,但其中一些正在静音播放。
【讨论】:
嗨,马克,谢谢你的回答。你能指出我可以切换 WaveProvider 的示例吗,因为我尝试过但没有成功,除了我还有一个问题,如果我这样做并切换 WaveProvider,听众不会注意到其他频道的差距?怎么办?以上是关于单声道多声道播放器的主要内容,如果未能解决你的问题,请参考以下文章