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应用程序。这会有什么不同吗?
是的,因为它是一个控制台应用程序,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");
}
以验证您是否有录音设备。