naudio:从pcm字节流

时间:2017-05-14 16:56:47

标签: c# stream naudio pcm wave

我正在尝试将音频字节流式传输到naudio waveout流中,但它不起作用。这是伪代码:

byte[] by = new byte[2560]  //audio packet sizes
int counter=0;

while (true) {  //keep receiving bytes from incoming TCP socket
  int bytesAvailable = await stream.ReadAsync(by, 0, 2560);  //read incoming bytes
  if(counter==0) {
    using (var MemoryStream = new MemoryStream(by)) {
      var waveOut = new WaveOut();
      var waveFormat = new WaveFormat(16000, 16, 2); // wave format
      var rawSource = new RawSourceWaveStream(MemoryStream, waveFormat);
      waveOut.Init(rawSource);
      waveOut.Play();
      counter++;
  }    
}    

..但我没有听到任何声音。我猜它只是读取一个数据包并停止,但我不知道。

任何人都知道错误/如何解决?我知道字节是进来的,因为我打印出最后一个字节,所以它与网络接收无关。

2 个答案:

答案 0 :(得分:0)

为此使用BufferedWaveProvider会更好。只需创建一个从WaveOut播放的BufferedWaveProvider设备,并将接收到的数据的字节数组添加到BufferedWaveProvider,因为它通过网络到达。

答案 1 :(得分:0)

对于Ortund:

 // JSON User Form
{ fields: [
    {
        name: "Full Name",
        type: "text",
        requiered: true
        ....
    }, {
       name: "Sex",
       type: "select",
       required: true
       options: ["Male", "Female"]
      ....
    }
]}