2017-10-21 185 views
1

我的c#代码如下,它没有提供任何错误,但没有声音输出。我使用来自COM14端口的putty和受监控的数据流很好。这是我第一次在NAudio中,所以不知道那我做错了什么。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; 
    } 

回答

1

有关于你的代码

  • 什么是波源对一些问题我 - 为什么是一个正在创建每次从COM端口接收数据的时间?
  • 您应该只在waveOut上调用InitPlay,但是您在接收到的每个音频缓冲区上调用Play

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