簡體   English   中英

C#NAudio:錄制的文件無法播放

[英]C# NAudio: Recorded file wont play

我正在嘗試錄制我的聲音,並在停止錄制后彈出一個保存文件對話框。 我可以將其保存到桌面上以進行播放。 不幸的是,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'的異常。 在谷歌搜索時被引用的范圍太廣而無濟於事。

在擁有可播放文件之前,必須在WaveFileWriter上調用Dispose 這是因為WAV文件格式在文件的開頭包含一些長度信息,這些信息僅在您調用Dispose時才填寫

暫無
暫無

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

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