不能播放用naudio录制的音频流

本文关键字:音频流 naudio 播放 不能 | 更新日期: 2023-09-27 17:49:43

我尝试将一些音频(在记录点击按钮后)记录到MemoryStream中,然后使用NAudio在visual studio(WPF)中播放。我生成了一个RawSourceWaveStream,当点击播放按钮时获得myMemoryStream,但我认为这是bug的代码。它不能播放……这是我的代码。
我哪里做错了?

      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";
        }
    }
}

不能播放用naudio录制的音频流

您需要在播放音频之前将MemoryStream上的Position设置为0。此外,请记住,使用此解决方案,您不应该在录制时尝试播放。