NAudio记录从未收到样本

时间:2012-03-07 11:16:11

标签: c# naudio

我正在尝试从输入设备中记录最简单的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应用程序。这会有所作为吗?

2 个答案:

答案 0 :(得分:3)

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

或者,如果您熟悉使用NuGet安装预发布包,则可以安装具有此类的最新NAudio prerelease(当前为1.5.4-beta)。

答案 1 :(得分:0)

但是,您确认您的设备有效吗?

尝试这样的事情;

        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");
        } 

验证您是否有录音设备。

伯尼