问题描述
我正在尝试使用带有 naudio 的麦克风录制用户,但是在录制开始后,waveSource_RecordingStopped
被调用并且不再录制。
我想知道为什么会发生这种情况以及我该如何解决。
这是我的代码:
private WaveFileWriter waveFile = null;
private WaveIn waveSource = null;
private static bool isRecording = false;
private void record_Button_Click(object sender,RoutedEventArgs e)
{
string directory = System.IO.Directory.GetCurrentDirectory().Replace("\\bin\\Debug","");
string saveLocation = System.IO.Directory.GetCurrentDirectory().Replace("\\voice-assistant_client\\voice-assistant_client\\bin\\Debug","");
Soundplayer startRecording = new Soundplayer(directory + "\\sounds\\beep-start.wav");
Soundplayer stopRecording = new Soundplayer(directory + "\\sounds\\beep-stop.wav");
bool hasMicrophone = true;
if (!isRecording)
{
waveSource = new WaveIn();
waveSource.WaveFormat = new WaveFormat(44100,1);
try
{
waveSource.StartRecording();
waveSource.StopRecording();
}
catch (Exception exeption)
{
Console.WriteLine(exeption);
hasMicrophone = false;
this.error.Visibility = Visibility.Visible;
}
if (hasMicrophone)
{
this.error.Visibility = Visibility.Hidden;
waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);
waveFile = new WaveFileWriter(saveLocation + "/Test0001.wav",waveSource.WaveFormat);
startRecording.PlaySync();
waveSource.StartRecording();
isRecording = true;
}
}
else
{
waveSource.StopRecording();
stopRecording.PlaySync();
isRecording = false;
}
}
void waveSource_DataAvailable(object sender,WaveInEventArgs e)
{
if (waveFile != null)
{
waveFile.Write(e.Buffer,e.BytesRecorded);
waveFile.Flush();
}
}
void waveSource_RecordingStopped(object sender,StoppedEventArgs e)
{
if (waveSource != null)
{
waveSource.dispose();
waveSource = null;
}
if (waveFile != null)
{
waveFile.dispose();
waveFile = null;
}
}
感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)