合并音频文件
Posted
技术标签:
【中文标题】合并音频文件【英文标题】:Merge audio files 【发布时间】:2014-01-03 06:19:31 【问题描述】:我想合并多个音频文件。我使用 linux sox
命令。
shell_exec('/usr/bin/sox 1.wav 2.wav combined.wav ');
它工作正常并生成组合音频文件。
我的 1.wav 和 2.wav 文件长度分别是 90 秒和 50 秒。这里sox
命令生成combined.wav,长度为140 秒。
在这里,在 2.wav 中前 20 秒的音频已经在后 20 秒的 1.wav 中可用。所以我想合并这样我的combined.wav 应该是120 秒。所以,我想删除combined.wav 中重复的音频,这些音频在1.wav 的最后几秒内和2.wav 的开始几秒内。
这里我只给出第二个作为示例。在我的实际代码中,秒数不固定。我只有音频文件。
有没有办法用 Linux 命令或 PHP 类做到这一点?
【问题讨论】:
【参考方案1】:你应该使用
sox 的-p 选项用于管道
-p 选项 sox 用于管道 - 基本上,它告诉 sox 使用 stdout 作为输出。使用 - 作为第二个 sox 的输入实际上是说输入是标准输入(恰好是前一个 sox 的标准输出,因为我们使用 | 管道)。 pad 30 0 告诉 pad 20 秒在开始和 0 秒在结束。
因为您想填充第二个音频的前 30 秒
$ sox 1.wav | sox - -m 2.wav -p pad 30 0 combined.wav
【讨论】:
你是对的,你能帮我多一点吗。这里我只给出第二个例子。在我的实际代码中,秒数不固定。我只有音频文件。 @Naveen 解释一下你在做什么可能比用勺子喂食更有帮助 是文件之间的延迟量,你不知道是随机的吗? @NaveenKumar 对我来说是未知数。每次音频文件不同,填充时间也不同 如果可以计算填充时间而不是 30,请在那个地方使用变量【参考方案2】:@Naveen Kumar:Sox 的 -p 选项:在预览模式下运行并快速运行。当输出格式的通道数和速率与输入文件不同时,这会在一定程度上加快 SoX。
【讨论】:
以上是关于合并音频文件的主要内容,如果未能解决你的问题,请参考以下文章