我想合并多个音频文件。我使用 linux sox
命令。
shell_exec('/usr/bin/sox 1.wav 2.wav combined.wav ');
它工作正常并生成合并的音频文件。
我的 1.wav 和 2.wav 文件长度分别是 90 秒、50 秒。这里 sox
命令生成长度为 140 秒的 combined.wav。
在这里,2.wav 中前 20 秒的音频已经在 1.wav 中的最后 20 秒音频中可用。所以我想合并这样我的 combined.wav 应该是 120 秒。所以,我想删除 combined.wav 中重复的音频,它在 1.wav 中的最后几秒钟和 2.wav 中的开始几秒钟。
这里我只举秒作为例子。在我的实际代码中,秒数不固定。我只有音频文件。
有什么方法可以用 Linux 命令或 PHP 类来完成吗?
最佳答案
你应该使用
sox 的-p 选项用于管道
sox 的 -p 选项用于管道 - 基本上,它告诉 sox 使用 stdout 作为输出。使用 - 作为第二个 sox 的输入实际上是说输入是 stdin(恰好是前一个 sox 的 stdout,因为我们使用 | 进行管道传输)。 pad 30 0 告诉 pad 开始 20 秒,结束 0 秒。
因为你想填充第二个音频的前 30 秒
$ sox 1.wav | sox - -m 2.wav -p pad 30 0 combined.wav
关于php - 合并音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20897795/