WaveBadFormat调用时.Init()非默认音频设备Naudio

时间:2017-03-14 23:57:53

标签: c# .net naudio

每当我尝试在没有使用默认音频设备的waveOut上调用.init()时,我会收到WaveBadFormat异常。如果我更改默认设备,我可以打开没有戏剧的waveout。在每种情况下,波提供者都是使用ieee 44.1k 2信道波形的混合器。

应用程序启动时会调用以下代码。

MixingWaveProvider32 mixer = new MixingWaveProvider32();
WaveOut wavOut = new WaveOut();
wavOut.DesiredLatency=100;
wavOut.Init(mixer);

但是如果用户选择不同的播放设备,则会调用以下代码

wavOut.Stop();
wavOut.Dispose();
wavOut = new WaveOut();
wavOut.DeviceNumber = ((WaveCapabilities)comboBox2.SelectedItem).Index;
wavOut.Init(mixer);

wavOut.Init(混音器)抛出了一个错误的格式异常。

检查设备的非公共成员在他们的supportedWaveFormats中似乎没有任何区别但是我也不相信任何SupportedWaveFormat可枚举选项与MixingWaveProvider32的32位ieee波格式相匹配使用

如果有人对于为什么这不是默认设备的问题(不管它是什么)有任何想法,但对于其他waveOut设备选项的ID我非常感谢!

1 个答案:

答案 0 :(得分:0)

是的,有时WaveOut设备驱动程序只接受某些格式。 NAudio确实包含帮助类,例如WaveFloatTo16Provider,您可以在案例中使用它来包装MixingWaveProvider32,然后再将其传递给WaveOut.Init方法