Angular 转换为MP3和流式传输的PCM音频数据每秒都会打嗝

Angular 转换为MP3和流式传输的PCM音频数据每秒都会打嗝,angular,tcpclient,audio-streaming,naudio,networkstream,Angular,Tcpclient,Audio Streaming,Naudio,Networkstream,我正在尝试使用TCP客户端(IPEndPoint-网络流)传输音频 使用的平台: using (var outStream = new MemoryStream()) { using (var ms = new MemoryStream(bytes)) { using (var reader = new WaveFileReader(m

我正在尝试使用TCP客户端(IPEndPoint-网络流)传输音频

使用的平台:

using (var outStream = new MemoryStream()) 
                {
                    using (var ms = new MemoryStream(bytes))
                    {
                        using (var reader = new WaveFileReader(ms)) //wav byte array
                        {
                            using (var writer = new LameMP3FileWriter(outStream, reader.WaveFormat, 128))
                            {
                                writer.MinProgressTime = 100;
                                reader.CopyTo(writer);
                                reader.Position = 0;
                                reader.Flush();
                            }
                            outStream.Position = 0;
                            return outStream.ToArray();
                        }
                    }
                }
NAudio.Wave.WaveFormat waveFormat = new NAudio.Wave.WaveFormat(8000, 16, 1);
                            MemoryStream wavStream = new MemoryStream();
                            WaveFileWriter wr = new WaveFileWriter(wavStream, waveFormat);//(wavStream, waveFormat);
                            wr.Write(byteArray, 0,byteArray.Length);
                           wr.Flush();
                            wavStream.Position = 0;
  • 对于UI–角度5
  • 用于流媒体–webAPI
我将根据send命令连续接收PCM–wav数据字节数组格式

•当我直接流式传输wav数据字节数组时,没有音频播放。(但我不断收到数据)

所以我决定将wav字节数组转换成MP3格式并流式传输。为了将wav字节数组转换为MP3格式,我使用了LAEMP3FileWriter(使用NAudio.Lame)

代码:

using (var outStream = new MemoryStream()) 
                {
                    using (var ms = new MemoryStream(bytes))
                    {
                        using (var reader = new WaveFileReader(ms)) //wav byte array
                        {
                            using (var writer = new LameMP3FileWriter(outStream, reader.WaveFormat, 128))
                            {
                                writer.MinProgressTime = 100;
                                reader.CopyTo(writer);
                                reader.Position = 0;
                                reader.Flush();
                            }
                            outStream.Position = 0;
                            return outStream.ToArray();
                        }
                    }
                }
NAudio.Wave.WaveFormat waveFormat = new NAudio.Wave.WaveFormat(8000, 16, 1);
                            MemoryStream wavStream = new MemoryStream();
                            WaveFileWriter wr = new WaveFileWriter(wavStream, waveFormat);//(wavStream, waveFormat);
                            wr.Write(byteArray, 0,byteArray.Length);
                           wr.Flush();
                            wavStream.Position = 0;
当LAMP3FileWriter尝试以波形格式读取字节时,它抛出错误“非波形文件-无RIFF头”,这意味着接收数据没有wav头。因此决定使用NAudio添加wav标头

代码:

using (var outStream = new MemoryStream()) 
                {
                    using (var ms = new MemoryStream(bytes))
                    {
                        using (var reader = new WaveFileReader(ms)) //wav byte array
                        {
                            using (var writer = new LameMP3FileWriter(outStream, reader.WaveFormat, 128))
                            {
                                writer.MinProgressTime = 100;
                                reader.CopyTo(writer);
                                reader.Position = 0;
                                reader.Flush();
                            }
                            outStream.Position = 0;
                            return outStream.ToArray();
                        }
                    }
                }
NAudio.Wave.WaveFormat waveFormat = new NAudio.Wave.WaveFormat(8000, 16, 1);
                            MemoryStream wavStream = new MemoryStream();
                            WaveFileWriter wr = new WaveFileWriter(wavStream, waveFormat);//(wavStream, waveFormat);
                            wr.Write(byteArray, 0,byteArray.Length);
                           wr.Flush();
                            wavStream.Position = 0;
然后使用上述代码将wav数据转换为MP3

现在,音频开始播放。但它每一秒钟都会产生一些打嗝声(间隙)。 请提供一些解决方案,以避免打嗝声并持续播放