我正在使用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时,它也能正常工作。 谢谢。