0

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

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

sox -m {voice_tag_loop} {source_file} {output_file}

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

{source_file}是音乐文件,也可以有不同的长度,例如 3:13 Min、4:20Min

我怎样才能将{voice_tag_loop}{source_file}具有{output_file}长度{source_file}但具有{voice_tag_loop}混合和循环/重复到也与长度一样长的{source_file}

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

此致

4

2 回答 2

1

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

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

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

于 2020-02-05T10:26:35.583 回答
1

好的,我现在有了所有您想要将短音频与长音频混合的答案,并且只要长音频存在,短音频就应该重复。

在我的情况下,一个小的描述。短文件将更改为 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}

问候

于 2020-02-20T15:20:54.760 回答