我有一个 RAW 音频文件,它由几个连接的较小 WAV 文件组成。我可以在 Sound Forge 中以 48,000、8 位 PCM、签名、单声道的形式打开和播放此文件。
在 C# 中,我想做的是以编程方式用长度相等或更短的新数据覆盖文件中的每个单独的 WAV,我认为我非常接近能够做到这一点。我可以对 RAW 文件执行 File.ReadAllBytes,循环遍历字节数组,并确定每个 WAV 的开始和结束位置。然后我在我的 PC 上选择新的 WAV 文件,删除标题,并将剩余的数据写入我的 RAW 文件。如果新的 WAV 小于它的目标,我用 0 填充差异。
然而,当我以上述设置在 Sound Forge 中打开新文件时,我所有的 WAV 看起来都更像实心块,而不是正常的“圣诞树”形状,而且它们都播放得响亮且失真。在第一次体验后,我突然意识到我所有的新源 WAV 都是 41,000、16 位 PCM、签名、立体声格式。我以这种格式打开了我新创建的 RAW 文件,它看起来和播放都很好。
我想我必须首先将我所有的新 WAV 转换为 48,000、8 位 PCM、签名、单声道,然后运行应用程序将它们复制到 RAW 文件中。在将数据复制到我的 RAW 文件之前,我使用 NAudio 编写了一些代码来对文件进行转换,但我仍然遇到同样的问题。我还尝试先在 Sound Forge 中手动转换我的每个新 WAV,但仍然遇到同样的问题。
我在这里想念什么?谢谢。