使用 NAudio 如何将非隔行扫描 32 位浮点格式保存到文件
Posted
技术标签:
【中文标题】使用 NAudio 如何将非隔行扫描 32 位浮点格式保存到文件【英文标题】:Using NAudio how do I save Non-interlaced 32-bit float format to file 【发布时间】:2020-12-16 02:13:32 【问题描述】:在 C# 中,我试图将 PCM 数据保存到 WAV 文件中。使用 NAudio,我创建了一个 WaveFileWriter。
this.fileWriter = new WaveFileWriter(@"c:\temp\test.wav", new WaveFormat(this.audioParameters.SampleRate, this.channels));
我在浮点数组中捕获 PCM 数据包并写入样本。
var arraySize = noOfFrames * this.channels;
var buffer = new float[arraySize];
Marshal.Copy(data, buffer, 0, arraySize);
this.fileWriter?.WriteSamples(buffer, 0, buffer.Length);
输出的音频文件长度合适,但音频听起来很糟糕。我可以说它是相同的音频,但它是不正确的。
// Non-interlaced 32-bit float format
// ChannelLayout = LayoutStereo
// FramesPerBuffer = 1024
// SampleRate = 44100
// channels = 2
在 NAudio 中,如何使用上述信息从 PCM 流创建 WAV 文件?
【问题讨论】:
【参考方案1】:您将 32 位浮点音频样本放入 16 位 WAV 文件中。使用WaveFormat.CreateIeeeFloatWaveFormat(sampleRate, channels)
作为WaveFormat
的WaveFileWriter
。
【讨论】:
以上是关于使用 NAudio 如何将非隔行扫描 32 位浮点格式保存到文件的主要内容,如果未能解决你的问题,请参考以下文章