我正在尝试从输入设备中记录最简单的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应用程序。这会有所作为吗?
答案 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");
}
验证您是否有录音设备。
伯尼