C#WPF窗口大小正在阻止Naudio Wavein / Waveout流
我正在使用Naudio和WPF在C#中开发混音器软件。
但是我已经面对了一个非通讯behaivour:输出正常播放,但是当我调整MainWindow大小时,输出音频开始启动。如果保持窗口调整大小,则缓冲区已满,并且有例外。看起来调整大小事件正在阻止主线程。
有人建议吗?
_wavein = new WaveIn();
_wavein.DeviceNumber = 0;
_wavein.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(0).Channels);
waveInProvider = new WaveInProvider(_wavein);
volumeSampleProvider = new VolumeSampleProvider(waveInProvider.ToSampleProvider());
volumeSampleProvider.Volume = (float)slider.Value;
MeteringSampleProvider meteringSampleProvider = new MeteringSampleProvider(volumeSampleProvider, 1000);
meteringSampleProvider.StreamVolume += meteringSampleProviderStreamVolume;
_waveOut = new WaveOut();
_waveOut.DesiredLatency = 50;
_waveOut.Init(meteringSampleProvider.ToWaveProvider());
_wavein.StartRecording();
_waveOut.Play();
I´m using NAudio and WPF to develop a mixer software in C#.
But I have faced with a non commum behaivour: the output is playing normally, but when I resize the MainWindow, output audio starts spliting. If keep window resize, buffer got full and a exception is throw. It´s looks like resize event is blocking the main thread.
Has someone any suggestion?
_wavein = new WaveIn();
_wavein.DeviceNumber = 0;
_wavein.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(0).Channels);
waveInProvider = new WaveInProvider(_wavein);
volumeSampleProvider = new VolumeSampleProvider(waveInProvider.ToSampleProvider());
volumeSampleProvider.Volume = (float)slider.Value;
MeteringSampleProvider meteringSampleProvider = new MeteringSampleProvider(volumeSampleProvider, 1000);
meteringSampleProvider.StreamVolume += meteringSampleProviderStreamVolume;
_waveOut = new WaveOut();
_waveOut.DesiredLatency = 50;
_waveOut.Init(meteringSampleProvider.ToWaveProvider());
_wavein.StartRecording();
_waveOut.Play();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您使用
waveOutevent
和waveoutevent
音频处理将发生在背景线程上,这应该有效If you use
WaveOutEvent
andWaveOutEvent
the audio processing will happen on a background thread which should help considerably