如何在C#中连接WAV文件

时间:2008-12-04 13:55:03

标签: c# merge wav

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

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

非常感谢你的帮助。 :)

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

如果您只需要这样做一次,那么最好的办法是使用一些专门用于该任务的软件。 Praataudacity会执行此操作(加入或合并两个曲目)。

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

罗布

答案 2 :(得分:-1)

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

答案 3 :(得分:-1)

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

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

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