簡體   English   中英

Wave標頭損壞了NAudio記錄的字節數組

[英]Wave header corrupted for an NAudio recorded array of bytes

我通過在類中使用Wave來使用NAudio API錄制聲音,但是當我播放錄制的字節數組時,它給出錯誤“波形頭已損壞”。 你能給我指出解決方案嗎?

 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();
            }
        }

這種方法根本行不通-錄制的音頻不是WAV文件,並且您不想每秒多次打開和關閉輸出設備。 您需要做的是創建一個BufferedWaveProvider並將從WaveIn接收的音頻放入其中。 然后創建DirectSoundOutWaveOut的單個實例,並使用BufferedWaveProvider初始化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM