php - 合并音频文件

标签 php linux audio sox

我想合并多个音频文件。我使用 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/

相关文章:

c - inotify 是否同步排队事件?

python - 通过python脚本运行ffmpeg命令

jquery - HTML5音频在jQuery中成功加载检查?

linux - 无法识别共享库文件格式

c - 如何在 C 中多次调用 sem_open?

ios - 使用 audiokit 在 AKsequencer 中创建额外 MIDI 轨道的问题

php - 每当我使用 PHP 将数据添加到 MySQL 时,如何获取 TIMESTAMP?

PHP include 不读取源文件的更改

php - MySQL:键/值存储查询优化

javascript - 在 php 页面上如何使用 mysql 在第 n 行之后插入行