CSCore 2 против 6 каналов RMS

Я рассчитываю среднеквадратичное значение из WasapiLoopbackCapture, и при использовании колонок 5.1 это дает мне среднеквадратичное значение от 0 до 2 (с наушниками - среднеквадратичное значение до 130). Как я могу получить только аудио данные с двух каналов?

Я попытался установить количество каналов на 2:

MMDevice captureDevice = MMDeviceEnumerator.DefaultAudioEndpoint(DataFlow.Render, Role.Console);
WaveFormat deviceFormat = captureDevice.DeviceFormat;
_capture = new WasapiLoopbackCapture(100, new WaveFormat(deviceFormat.SampleRate, deviceFormat.BitsPerSample, deviceFormat.Channels <= 2 ? deviceFormat.Channels : 2));

который работает только для наушников, с динамиками вылетает. Тогда у меня есть это:

_capture.Initialize();
_soundInSource = new SoundInSource(_capture) { FillWithZeros = false };

_stream = _soundInSource.WaveFormat.SampleRate == 44100
    ? new SingleBlockNotificationStream(_soundInSource.ToStereo().ToSampleSource())
    : new SingleBlockNotificationStream(_soundInSource.ChangeSampleRate(44100).ToStereo().ToSampleSource());

_soundInSource.DataAvailable += OnSoundDataAvailable;

_capture.Start();

но ни что.ToStereo() помогает с 6 каналами.

Не могли бы вы мне помочь? Btw. когда я устанавливаю количество выходов на 2 в Realtek, он тоже работает нормально. Спасибо.

0 ответов

Другие вопросы по тегам