CSCore 2 vs 6频道RMS

时间:2017-12-17 22:27:50

标签: c# wasapi cscore

我正在使用WasapiLoopbackCapture计算RMS,当使用5.1扬声器时,它给出了0到2之间的RMS值(使用耳机时,RMS最多可达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个频道。

你能帮帮我吗? 顺便说一句。当我在Realtek中将输出数量设置为2时,它也能正常工作。 谢谢。

0 个答案:

没有答案