如何在C#中连接WAV文件

我有2个wav文件,我想用两个音轨连接成一个文件。

是否有任何api用于该任务或.NET中的一些内置命令,我可以用某种天才的方式使这项任务成为可能吗?

非常感谢您的帮助。 🙂

如果我没有弄错,你可以将第二个文件中的字节附加到第一个文件的末尾。 如果有任何标题数据,您将要排除它(请参阅此处 )

请注意,您可能会听到两个剪辑之间的咔嗒声或砰砰声,因为没有混合。 你可以通过淡化来解决这个问题(逐渐将最后几毫秒的值减少到中心值)。

对不起,我可能有点不清楚。 我不想合并它们以便它们同步播放。 我想将曲目追加到彼此的末尾,以便它们在同一个文件中一个接一个地播放。

但我想我在这个post中找到了答案。

它工作得很好,它使用的是前面提到的Jon B技术。

如果您只需要这样做一次,那么最好的办法是使用一些专门用于该任务的软件。 Praat或audacity会这样做(加入或合并两个轨道)。

Praat也可以编写脚本,因此可以编写Praat脚本,然后在.Net应用程序中调用Praat和脚本。

直接的方法是解释wav文件头,提取样本并将两个文件中的样本交织成一个新的样本流,然后写入新的wav文件。 您还可以逐个样本地添加两个源wav文件的样本值,以将两个文件“混合”到一个轨道中。 wav文件格式并不复杂,因此编写此代码应该不会太困难。 此外,还有许多开源项目包含读取和写入wav文件的代码。 请注意,两个源wav文件具有不同的采样率可能会有些棘手。 检查这个以获取wav格式的描述。

是的,您可以将第二个wav的数据(不包括其标题)附加为sais Jon B,但您还必须修改第一个文件的标题以指示新的长度,否则某些音频播放器将在第一个文件结束时停止部分。

对于动态连接,由于您不知道开头的总wav的大小,您可以在第一个文件的标题上放置假长度,例如将持续时间设置为10小时。

然后音频播放器应该等到你追加每个数据。 它至少适用于ffmpeg