簡體   English   中英

無法播放用naudio錄制的音頻流

[英]Can't play audio stream recorded with naudio

我嘗試將一些音頻(在“記錄單擊按鈕”之后)記錄到MemoryStream中,然后使用NAudio在Visual Studio(WPF)中播放它。 我生成了RawSourceWaveStream,它在單擊播放按鈕時獲取了myMemoryStream,但我認為這是在修改代碼。 它不起作用...這是我的代碼。
我哪里出問題了?

      namespace RecAndPlay
      {
          /// <summary>
          /// Interaction logic for MainWindow.xaml
          /// </summary>
      public partial class MainWindow : Window
      {
          public MainWindow()
          {
              InitializeComponent();
          }


        private WaveIn myWaveIn=null;
        private MemoryStream myMemoryStream = null;
        private WaveOut myWaveOut= null;
        private RawSourceWaveStream myRaw = null;
        private void myRecord(object sender, RoutedEventArgs e)
        {

            {
                RecordButton.Content = "Stop Rec";
                myWaveIn = new WaveIn();
                myWaveIn.WaveFormat = new WaveFormat(44100, 1);
                myWaveIn.DeviceNumber = 0;
                myWaveIn.DataAvailable += myWaveIn_DataAvailable;
                myMemoryStream = new MemoryStream();
                myWaveIn.StartRecording();
            }

        }

        void myWaveIn_DataAvailable(object sender, WaveInEventArgs e)
        {

            myMemoryStream.Write(e.Buffer, 0, e.BytesRecorded);
        }

        private void myPlay(object sender, RoutedEventArgs e)
        {

            myWaveOut = new WaveOut();
            myRaw = new RawSourceWaveStream(myMemoryStream, myWaveIn.WaveFormat);
            myWaveOut.Init(myRaw);
            myWaveOut.Play();


        }

        private void mtStopRec(object sender, RoutedEventArgs e)
        {
            myWaveIn.StopRecording();
            RecordButton.Content = "Record";
        }
    }
}

在播放音頻之前,需要將MemoryStream上的Position設置為0。 另外,請記住,使用此解決方案時,請勿在仍在錄音時嘗試播放。

暫無
暫無

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

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