C# 使用WasapiOut Naudio更改声卡的采样率

C# 使用WasapiOut Naudio更改声卡的采样率,c#,audio,device,naudio,sample-rate,C#,Audio,Device,Naudio,Sample Rate,我想用c#with Naudio为我的声卡编程选择一个特定的采样率。 我的输出是独占模式下的WasapiOut 我已经尝试了很多东西,但都不管用,我到处都找遍了,只找到了这个: 但他们并没有真正找到正确的解决方案 以下是我的WasapiOut: var enumerator = new MMDeviceEnumerator(); MMDevice device = enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Ac

我想用c#with Naudio为我的声卡编程选择一个特定的采样率。 我的输出是独占模式下的WasapiOut

我已经尝试了很多东西,但都不管用,我到处都找遍了,只找到了这个: 但他们并没有真正找到正确的解决方案

以下是我的WasapiOut:

var enumerator = new MMDeviceEnumerator();
MMDevice device = enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active).FirstOrDefault(d => d.DeviceFriendlyName == name);
outputDevice = new WasapiOut(device, AudioClientShareMode.Exclusive, false,200);
我不明白的是: 它说: “如果选择AudioClientShareMode.Exclusive,则您请求以独占方式访问声卡。这种方法的好处是您可以指定所需的准确采样率” 我也没有找到具体的采样率

如果这里有人知道答案,那就太好了,谢谢

编辑:

我想我找到了这样做的方法:

var waveFormat5 = WaveFormat.CreateIeeeFloatWaveFormat(Int32.Parse(comboBox1.Text), 2);
            var test2 = new MixingSampleProvider(waveFormat5);
            var audioFile = new AudioFileReader("test.wav");
            var input = audioFile;
            test2.ReadFully = true;
            test2.AddMixerInput(new AutoDisposeFileReader(input,waveFormat5));
            outputDevice.Init(test2);
用“outputDevice”作为我的输出。 因此,我将OUPUTDEVENT采样率设置为我在混音样本提供商处选择的采样率,然后向混音器发送音频文件,这样做对吗?
因为我的音频文件采样率为44100,我选择将outputDevice采样率也设置为44100,但当我制作outputDevice.Play()时,我听到的声音比原始声音快。

一旦创建了
WasapiOut
的实例,就调用
Init
传递要播放的音频。它将尝试直接使用该音频的采样率(和
波形格式
),前提是声卡支持它。Usi

我解决了我的问题,我使用了一个AudioPlaybackEngine()和一个MixingSampleProvider,以及一个try/catch来处理“输入的采样率不同”的消息错误。

嘿,马克!谢谢,但我可能问的问题不对。例如,我想将wasapiOut采样率设置为48000,即使我想以44100播放音频文件。outputDevice采样率必须保持与我选择的相同,音频文件的采样率也必须保持不变。我编辑了我的问题以添加新信息。