NAudio记录从未收到样本

本文关键字:样本 记录 NAudio | 更新日期: 2023-09-27 18:27:05

我正在尝试从输入设备录制最简单的NAudio示例,但由于某种原因,我无法调用DataAvailable回调函数。

在下面的例子中,Do Something上的断点永远不会被击中。

WaveIn waveIn = new WaveIn();
waveIn.DeviceNumber = 0;
waveIn.DataAvailable += waveIn_DataAvailable;
waveIn.RecordingStopped += new EventHandler(waveIn_RecordingStopped);
waveIn.WaveFormat = new WaveFormat(44100, 1);
waveIn.StartRecording();
private void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
   Do Something
}

我已经检查、重新检查和重新检查了这些设置是否与NAudio VoiceRecorder测试应用程序使用的设置完全相同,该应用程序能够以完全相同的设置精细地录制音频。

唯一的区别是我的测试应用程序是控制台应用程序,而不是WPF应用程序。这会有什么不同吗?

NAudio记录从未收到样本

是的,因为它是一个控制台应用程序,WaveIn类使用Windows消息作为回调。如果您能够从codeplex下载并构建最新的源代码,则可以使用全新的WaveInEvent类(2012年3月6日添加),该类不依赖于Windows消息循环。

或者,如果您熟悉使用NuGet安装预发行包,您可以安装最新的NAudio预发行版(目前为1.5.4-beta),它在.

中包含此类

只是想一想,您是否验证了设备的有效性?

试试这样的东西;

        int waveInDevices = WaveIn.DeviceCount;
        for (int waveInDevice = 0; waveInDevice < waveInDevices; waveInDevice++)
        {
            WaveInCapabilities deviceInfo = WaveIn.GetCapabilities(waveInDevice);
            MessageBox.Show("Device " + waveInDevice + ": " + deviceInfo.ProductName +
                ", " + deviceInfo.Channels + " channels");
        } 

以验证您是否有录音设备。