Я хочу выбрать конкретную частоту дискретизации для моей звуковой карты программно в c # с Naudio.
Мой вывод - это WasapiOut в эксклюзивном режиме.
Я уже много чего перепробовал, но ничего не получалось, я искал везде и нашел только следующее: Как изменить конфигурацию динамика в Windows в C #?
Но они не нашли правильного решения.
Вот мой 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);
Что я не понимаю, так это то, что здесь:
https://github.com/naudio/NAudio/blob/master/Docs/WasapiOut.md
Это говорит о том, что:
«Если вы выбираете 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" в качестве моего WasapiOut.
Поэтому я установил частоту дискретизации ouputDevice на ту, которую я выбрал с помощью поставщика микширующих выборок, а затем я отправил аудиофайл на этот микшер, это правильный путь?
Потому что моя частота дискретизации аудиофайла равна 44100, и я решил установить частоту дискретизации outputDevice также на 44100, но когда я выполняю outputDevice.Play (), звук, который я слышу, быстрее оригинального.