C# NAudio记录的字节数组的波头已损坏
我在类中使用Wave使用NAudio API录制声音,但当我播放录制的字节数组时,它会给出错误“Wave header已损坏”。 你能告诉我解决办法吗C# NAudio记录的字节数组的波头已损坏,c#,naudio,C#,Naudio,我在类中使用Wave使用NAudio API录制声音,但当我播放录制的字节数组时,它会给出错误“Wave header已损坏”。 你能告诉我解决办法吗 waveInStream = new WaveIn(); writer = new WaveFileWriter(@"C:\Users\Ali\Desktop\abc.wav", waveInStream.WaveFormat); waveInStream.DataAvailable += n
waveInStream = new WaveIn();
writer = new WaveFileWriter(@"C:\Users\Ali\Desktop\abc.wav", waveInStream.WaveFormat);
waveInStream.DataAvailable += new EventHandler<WaveInEventArgs(waveInStream_DataAvailable);
waveInStream.StartRecording();
void waveInStream_DataAvailable(object sender, WaveInEventArgs e)
{
writer.WriteData(e.Buffer, 0, e.BytesRecorded);
//I want to play e.buffer but it gives me error
}
public void play_it( MemoryStream s)
{
//here i convert recorded byte into stream for playing
using (var wfr = new WaveFileReader(s))
using (WaveChannel32 wc = new WaveChannel32(wfr) { PadWithZeroes = false })
using (var audioOutput = new DirectSoundOut())
{
audioOutput.Init(wc);
audioOutput.Play();
while (audioOutput.PlaybackState != PlaybackState.Stopped)
{
Thread.Sleep(20);
}
audioOutput.Stop();
}
}
waveInStream=新的WaveIn();
writer=新的waveilewriter(@“C:\Users\Ali\Desktop\abc.wav”,waveInStream.WaveFormat);
waveInStream.DataAvailable+=new EventHandler此方法根本不起作用-录制的音频不是WAV文件,您不希望一秒钟多次打开和关闭输出设备。您需要做的是创建一个BufferedWaveProvider
,并将从WaveIn
接收的音频放入其中。然后创建DirectSoundOut
或WaveOut
的单个实例,并使用BufferedWaveProvider
初始化该实例