我想合并多个音频文件。我使用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类做到这一点?
答案 0 :(得分:0)
你应该使用
sox的-p选项用于管道 sox的-p选项用于管道 - 基本上,它告诉sox使用stdout作为输出。使用 - 作为第二个sox的输入实际上是说输入是stdin(恰好是前一个sox的stdout,因为我们正在使用|)。 pad 30 0在开始时告诉pad 20秒,在结束时告诉pad 0秒。因为你想要填充第二个30秒的第二个音频
$ sox 1.wav | sox - -m 2.wav -p pad 30 0 combined.wav
答案 1 :(得分:0)
@Naveen Kumar:Sox的-p选项:在预览模式下运行并快速运行。当输出格式具有不同数量的通道和不同于输入文件的速率时,这将在某种程度上加速SoX。