C#WPF窗口大小正在阻止Naudio Wavein / Waveout流

发布于 2025-01-22 17:24:57 字数 847 浏览 3 评论 0原文

我正在使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彩扇题诗 2025-01-29 17:24:57

如果您使用waveOuteventwaveoutevent音频处理将发生在背景线程上,这应该有效

If you use WaveOutEvent and WaveOutEvent the audio processing will happen on a background thread which should help considerably

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文