【发布时间】:2017-03-14 23:57:52
【问题描述】:
每当我尝试在未使用默认音频设备的 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(mixer) 会抛出错误的格式异常。
检查设备的非公开成员,他们的supportedWaveFormats 似乎没有任何区别,但我也不相信任何SupportedWaveFormat 可枚举选项与MixingWaveProvider32 使用的32 位ieee 波形格式匹配。
如果有人对为什么这对于默认设备(无论它可能是什么)不是问题但对于其他 waveOut 设备选项有任何想法,我将非常感激!
【问题讨论】: