使用 Sox 混合和修剪 2 个文件

Posted

技术标签:

【中文标题】使用 Sox 混合和修剪 2 个文件【英文标题】:Mix and trim 2 files with Sox 【发布时间】:2020-02-05 09:30:05 【问题描述】:

我需要一点帮助,希望能在这里找到。

当用户上传文件时,我正在使用 sox 在我的服务器上用语音标签标记一些音乐。这是我正在使用的命令。一切正常。

sox -m voice_tag_loop source_file output_file

现在我想改变一些东西,但不知道该怎么做并且找不到解决方案。 因此voice_tag_loop 将由用户上传,并且可以具有所有长度,例如30 秒、20 秒、17 秒或 1 分钟。以前不知道。

source_file 是音乐文件,也可以有不同的长度,例如3:13 分钟,4:20 分钟

我怎样才能将voice_tag_loopoutput_file 的长度为source_filevoice_tag_loop 混合并循环/重复到也与@ 的长度一样长的source_file 混合987654329@

我希望我能解释一下,你能理解。

最好的问候

【问题讨论】:

【参考方案1】:

重复直到源文件用完,例如:

sox -m "| sox voice_tag_loop -p repeat -" source_file trim 0 $(soxi -d source_file)

注意,不要忘记trim 位,否则重复部分会生成无限文件。

【讨论】:

感谢您的帮助,但它不起作用。我找到了一个命令 sox short.mp3 -p repeat | sox - -m long.mp3 output.mp3 可以,但现在应该有 long.mp3 的最大重复时间【参考方案2】:

好的,我现在已经找到了所有你想要混合短音频和长音频的答案,并且只要长音频是,短音频应该重复。

在我的例子中是一个简短的描述。短文件将更改为 44.1kHz,每 30 秒循环一次。最多 100 次,但只要长文件是。最后两个文件将混合在一起。这都是一个过程。

sox short_file -r 44.1k -p pad 0 30 重复 100 修剪 0 $(sox --i -d long_file) | sox - -m long_file output_file

问候

【讨论】:

以上是关于使用 Sox 混合和修剪 2 个文件的主要内容,如果未能解决你的问题,请参考以下文章

修剪音频文件并获得静音之间的部分

Sox:混合两个输入,其中一个重复

在 SOX 中混合带有偏移量的音轨

使用 SoX 更改音频文件中某个时间范围的音量级别

在 Linux 中通过 PHP 使用 SoX

在 Python 中管道 SoX - 子流程替代方案?