读取IP(UDP)数据并保存为音频文件格式

时间:2018-07-30 06:26:33

标签: c#

我将读取IP数据并存储到记事本(.txt文件格式)文件,在保存此存储的记事本数据后,使用c#中的“ Naudio”库(命名空间)将其转换为音频(.Wav)五种格式。

问题:音频文件的声音(清晰度)不正确。

UdpClient listener = new UdpClient(8081);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Parse("x.x.x.x"), listenPort);

while (true)
{
      byte[] bytes = listener.Receive(ref groupEP);
      string path = "E:\\Audio\\8081.txt";
      using (StreamWriter writer = new StreamWriter(path, true))
      {
         writer.WriteLine(Encoding.ASCII.GetString(bytes, 0, bytes.Length));
         writer.Close();
      }
      WaveFormat waveFormat = WaveFormat.CreateMuLawFormat(8000, 1);
      using (WaveFileWriter writer = new WaveFileWriter("C:\\8081.Wav",waveFormat))
     {
       byte[] bytes1 = Encoding.ASCII.GetBytes(File.ReadAllText("E:\\Audio\\8081.txt"));
       writer.WriteData(bytes1, 0, bytes1.Length);
     }
}

1 个答案:

答案 0 :(得分:1)

ASCII是7位编码。如果字节的值大于127,则可能会被编码器/解码器修改。这意味着如果您这样做,例如:

var bytes1 = Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(bytes));

您的 bytes1 数组值可能与 bytes 的值不同。

解决此问题的最简单方法是将数据保存为二进制格式,而不将其转换为文本。

如果您绝对需要文本转换,请使用

Convert.ToBase64String / Convert.FromBase64String