【发布时间】:2010-09-25 08:01:42
【问题描述】:
我有 2 个 wav 文件,我想将它们与两个音轨连接成一个文件。
是否有任何用于该任务的 api 或 .NET 中的一些内置命令,我可以以某种天才的方式使用这些命令来完成这项任务?
非常感谢您的帮助。 :)
【问题讨论】:
-
您能否澄清一下您想合并两首曲目以便它们同步播放,还是要将一首曲目附加到另一首曲目的末尾?
我有 2 个 wav 文件,我想将它们与两个音轨连接成一个文件。
是否有任何用于该任务的 api 或 .NET 中的一些内置命令,我可以以某种天才的方式使用这些命令来完成这项任务?
非常感谢您的帮助。 :)
【问题讨论】:
如果我没记错的话,您可以将第二个文件中的字节附加到第一个文件的末尾。如果有任何标题数据,您需要排除它(请参阅here)
请注意,您可能会听到两个剪辑之间的咔嗒声或爆裂声,因为不会有混合。您可能可以通过淡化(逐渐将最后几毫秒的值降低到中心值)来解决这个问题。
【讨论】:
直接的方法是解释 wav 文件头,提取样本并将两个文件中的样本交错到一个新的样本流中,然后将其写入新的 wav 文件。您还可以逐个样本添加两个源 wav 文件的样本值,以将两个文件“混合”到一个轨道中。 wav 文件格式并没有那么复杂,所以编写这段代码应该不会太难。此外,还有很多开源项目包含读写 wav 文件的代码。 请注意,由于两个源 wav 文件具有不同的采样率,事情会变得有些棘手。 查看this 了解 wav 格式的说明。
【讨论】:
是的,您可以将第二个 wav 的数据(不包括其标头)附加为 sais Jon B,但您还必须修改第一个文件的标头以指示新长度,否则某些音频播放器将在最后停止第一部分。
对于动态连接,由于您不知道开头总 wav 的大小,您可以在第一个文件的标题上放置一个假的长度,例如放置 10 小时的持续时间。
然后音频播放器应该等到您附加每个数据。它至少适用于ffmpeg
【讨论】: