每当我尝试在没有使用默认音频设备的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我非常感谢!
答案 0 :(得分:0)
是的,有时WaveOut
设备驱动程序只接受某些格式。 NAudio确实包含帮助类,例如WaveFloatTo16Provider
,您可以在案例中使用它来包装MixingWaveProvider32
,然后再将其传递给WaveOut.Init
方法