2
我已初始化使用该设备:在运行时改变波格式与n音讯
static IWavePlayer waveOut;
static WaveFormat waveFormat;
static BufferedWaveProvider waveProvider;
private static int AudioDeviceInit()
{
waveOut = new DirectSoundOut();
waveFormat = new WaveFormat(44100, 2);
waveProvider = new BufferedWaveProvider(waveFormat);
waveOut.Init(waveProvider);
waveOut.Play();
return 0;
}
我使用添加PCM流到它:
waveProvider.AddSamples(samples, 0, size);
以上是只要工作细流数据具有相同的配置。
我有另一个接收采样率和通道数的函数,我想重新配置waveprovider以使用新提供的配置。以下是我正在使用的代码:
private static void AudioConfigCallback(int rate, int channel)
{
waveFormat = new WaveFormat(rate, channel);
waveProvider = new BufferedWaveProvider(waveFormat);
waveOut.Init(waveProvider);
return;
}
这不起作用,我相信这不是正确的做法。任何想法如何我可以重新配置设备使用新的sample_rate和num_channels
谢谢。
谢谢马克。在性能方面,哪个更好,关闭/打开设备还是格式转换? –
关闭/打开设备将表现更好,因为任何必要的SRC将由驱动程序自己完成(至少使用WaveOut/DirectSoundOut)。 –
是的想法一样。它在关闭并再次打开设备后立即工作。非常感谢你的帮助 :) –