.net - 单声道多声道播放器

标签 .net audio naudio asio

我是音频编程的新手,我有一个任务要做,但我不知道怎么做。如果你能引导我朝着正确的方向前进,那对我来说意义重大。

我想通过一个声音设备的所有 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/

相关文章:

c# - NAudio 中的 WaveStream 到字节数组?

audio - 我们如何重新采样onDataAvailable事件中收到的缓冲区

c# - 如何获取描述基本类型数组的类型?

c# - Web 服务不返回当前 Windows 用户名

java - 将 .wav 文件转换为二进制文件,然后再转换回 .wav?

audio - 通过 Microsoft DLL 或实用程序获取音频文件持续时间

c# - 启用迁移时出错

c# - 为什么 Stack<T> 和 Queue<T> 用数组实现?

ios - 读取音频文件,执行过滤器(即混响),然后写入音频文件而不在 iOS 上播放

c# - 如何通过Naudio/c#播放部分wav文件