gpt4 book ai didi

C# NAudio : Recorded file wont play

转载 作者:行者123 更新时间:2023-12-03 00:42:15 29 4
gpt4 key购买 nike

我正在尝试录制我的声音,并且在停止录制后,会弹出一个保存文件对话框。我可以这样做并将其保存到我的桌面进行播放。不幸的是,Groove 无法识别该文件(说明它无法播放),我很肯定这不是他们的错。

请原谅评论和代码转储。

public partial class RecordAndEditVoice : Window
{
WaveIn sourceStream = null;
WaveFileWriter waveWriter = null;
SaveFileDialog save = new SaveFileDialog();

private void sourceStream_DataAvailable(object sender, WaveInEventArgs e)
{
if (waveWriter == null) return;
//Adds bytes to the wave file, storing them in a buffer?
waveWriter.Write(e.Buffer, 0, e.BytesRecorded);
waveWriter.Flush();
}

private void recordButton_Click(object sender, RoutedEventArgs e)
{


MainWindow mw = new MainWindow();
int devNum = mw.DeviceButton();

if (recordButton.Content.ToString() == "RECORD")
{
recordButton.Content = "STOP";
//Start recording audio.
sourceStream = new WaveIn();

sourceStream.DeviceNumber = devNum;

//1. Set the sample rate. 2. Get number of channels supported on the device.
sourceStream.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(devNum).Channels);



sourceStream.StartRecording();

sourceStream.DataAvailable += new EventHandler<WaveInEventArgs>(sourceStream_DataAvailable);


}
else if(recordButton.Content.ToString() == "STOP")
{

sourceStream.StopRecording();
save.Filter = "Wave Files (*.wav)|*.wav;";
if (save.ShowDialog() != true) return;

waveWriter = new WaveFileWriter(save.FileName, sourceStream.WaveFormat);


recordButton.Content = "RECORD";



}
}
}

我尝试将 waveWriter 移动到 if 语句中,但它引发了“System.ArgumentException”类型的异常。当用谷歌搜索时,它被引用得太广泛而没有多大帮助。

最佳答案

您必须调用 DisposeWaveFileWriter在你有一个可播放的文件之前。这是因为 WAV文件格式在文件开头包含一些长度信息,只有在调用 Dispose 时才会填写。

关于C# NAudio : Recorded file wont play,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32333060/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com