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)。 –
是的想法一樣。它在關閉並再次打開設備後立即工作。非常感謝你的幫助 :) –