2008-12-04 109 views
4

我有2个wav文件,我想用两个音轨制作/合并/合并成一个文件。以C#合并WAV文件

是否有该任务或.NET可以我可以在索姆天才方式使用,使这个任务可能一些内置店命令的任何API?

非常感谢您的帮助。 :)

+0

你能不能澄清,要两条轨道合并,这样他们发挥同步,还是你想一个轨道追加到其他的结束? – RobS 2008-12-04 20:01:15

回答

3

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

请注意,您可能会听到两个剪辑之间的点击或弹出,因为没有混合。你可以通过衰减来解决这个问题(逐渐减少最近几ms的值到中心值)。

0

直截了当的方法是解释wav文件头,抽取样本和交织来自两个文件中的样品放入你写一个新的wav文件新的样品流。您还可以通过样本添加两个源wav文件的样本值,以将这两个文件“混合”为单个轨道。 wav文件格式并不复杂,所以编写这段代码不应该太困难。另外,还有很多包含代码来读写wav文件的开源项目。 请注意,这两个源wav文件有不同的采样率有点棘手。 查询this了解wav格式的说明。

2

如果您只需要这样做一次,那么最好的选择是使用专门用于该任务的一些软件。 Praataudacity将执行此操作(连接或合并两个轨道)。

普瑞特也可以编写脚本,以便有可能脚本普瑞特,然后调用普瑞特和从.NET应用程序中的脚本。

罗布

+0

嗡嗡声:) 是的,我知道,问题是我有60个文件需要合并成15分钟的文件。最有可能的是我必须不止一次地这样做。 我已经看过sox和mancoder作为你所说的一个例子,但他们似乎没有把戏。 – suxSx 2008-12-05 06:57:55

4

对不起,我可能有点不清楚。我不想合并它们,所以它们同步播放。我想将曲目附加到对方的尾部,以便在同一个文件中彼此播放一首和一首。

但我想我在this线程中找到了答案。

它完美,它使用的技术前面提到乔恩乙

0

是的,你可以只添加第二个波形的数据(不包括其标题)作为最高审计机关乔恩B,但你也必须修改的第一个文件,以表明新长度的头,否则某些音频播放器将停第一部分结束。

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

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