NAudio流播放器没有声音输出

NAudio stream player no sound output

我的 c# 代码如下,它没有给出任何错误,但没有声音输出 also.I 使用了来自 COM14 端口的腻子和监控数据流 fine.this 是我第一次使用 NAudio,所以不知道那我做错了什么。

    WaveInEvent waveSource;
    WaveOut waveOut = new WaveOut();
    WaveFormat format = new WaveFormat(8000, 16, 1);

    public int audioCounter = 0;
    public byte[] buffer;
    private BufferedWaveProvider _bufferedWaveProvider = new BufferedWaveProvider(new WaveFormat(16000, 16, 1));

    private void btn_scan_Click(object sender, EventArgs e)
    {
        string temppoteName = "COM14";
        SerialPort tempSerialPort = new SerialPort(temppoteName, 57600, Parity.None, 8, StopBits.One);
        tempSerialPort.Open();
        tempSerialPort.DataReceived += new SerialDataReceivedEventHandler(comPort14_DataReceived);
    }
    private void comPort14_DataReceived(object sender,SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Console.WriteLine("Data Started Reciving :" + sp.PortName);

        waveSource = new WaveInEvent();
        waveSource.WaveFormat = new WaveFormat(8000, 16, 1);
        waveOut.DesiredLatency = 100;

        int x = sp.BytesToRead;
        buffer = new byte[x];
        sp.Read(buffer, 0, x);
        _bufferedWaveProvider.AddSamples(buffer, 0, x);

        if (audioCounter == 0)
        {
            waveOut.Init(_bufferedWaveProvider);

        }
        waveOut.Play();


        ++audioCounter;
    }

我对您的代码有一些疑问

  • 什么是 waveSource - 为什么每次从 COM 端口接收数据时都创建一个?
  • 你应该只在 waveOut 上调用 InitPlay 一次,但你在收到的每个音频缓冲区上调用 Play

我推荐的解决此类问题的方法是使用 WaveFileWriter 将您收到的音频写入 WAV 文件。这样您就可以在常规波形编辑器中检查它,看看它是否包含您期望的信号。