合并音频文件

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。

【讨论】:

以上是关于合并音频文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个音频文件合并为一个并在javascript中合并后播放

从中间或特定时间将视频合并到音频文件

Swift:合并音频和视频文件

如何在ffmpeg中合并音频和两个视频文件?

合并音频文件

iOS - 将两个视频合并为一个带音频的视频文件