我将读取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);
}
}
答案 0 :(得分:1)
ASCII是7位编码。如果字节的值大于127,则可能会被编码器/解码器修改。这意味着如果您这样做,例如:
var bytes1 = Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(bytes));
您的 bytes1 数组值可能与 bytes 的值不同。
解决此问题的最简单方法是将数据保存为二进制格式,而不将其转换为文本。
如果您绝对需要文本转换,请使用
Convert.ToBase64String / Convert.FromBase64String