我正在使用sox
工具,我想合并两个音频文件,让我们说long.ogg
和short.ogg
输出文件{{ 1}}。
使用output.ogg
非常容易。
事情是,我希望{n}后$ sox -m long.ogg short.ogg output.ogg
播放(而short.ogg
应该从头开始)。为此,我找到了 pad 效果。但我不理解只延迟long.ogg
输入文件的语法,而不是short.ogg
输入文件。
我找到了一种(脏)方式(n = 6):
long.ogg
我不想创建一个中间文件。在此先感谢您的帮助。
答案 0 :(得分:7)
您应该可以执行以下操作:
sox short.ogg -p pad 0 6|sox - long.ogg output.ogg
sox的 -p
选项用于管道 - 基本上,它告诉sox使用stdout作为输出。使用-
作为第二个sox的输入实际上是说输入是stdin(恰好是前一个sox的stdout,因为我们正在使用|
)。 pad 0 6
告诉垫在开始时为0秒,在结束时为6秒。
希望这有帮助。
答案 1 :(得分:7)
感谢icyrock,我设法找到了解决方案。我正在使用:
$ sox short.ogg -p pad 6 0 | sox - -m long.ogg output.ogg
对于多曲目(奥兰多学分):
$ sox starts-last.mp3 -p pad 2 0 | sox - -m starts-second.mp3 -p pad 2 0 | sox - -m starts-first.mp3 combined.mp3
答案 2 :(得分:1)
这是另一个受益于双引号使用的解决方案。它使命令更易读,更容易扩展:
sox −−combine sequence "|sox input/odin.wav -p pad 0 1" "|sox input/dva.wav -p pad 0 1" "|sox input/tri.wav -p pad 0 1" output/test.wav
这将连接所有三个文件,每个文件后暂停1秒(odin,沉默,dva,沉默,三,沉默。)
应用于原帖,我们得到:
sox −−combine sequence "|sox long.ogg -p pad 0 6" "|sox short.ogg -p pad 0 1" newfile.ogg
(在Windows上的SoX 14.4.1上测试好了。)
我几乎没有看到任何使用双引号的SoX示例,所以我希望这有助于某人!
答案 3 :(得分:0)
也可以使用延迟命令。
您可以执行以下操作: sox.exe -m short.ogg long.ogg delay 6
这将合并两个文件,short.ogg将在long.ogg
中启动6秒答案 4 :(得分:0)
因为我还没有被允许评论,我只想说我喜欢Fabien的答案,因为它也可以与“NULL”声音文件一起使用:例如,
sox --combine concatenate "|sox -n -p synth 1 sine 300" "|sox -n -p synth 1 sine 400" useful.wav
将以300 Hz的频率写入1秒的正弦音,然后以400 Hz的频率写入1秒的正弦音,并将其写入“useful.wav”文件。
sox -n -p synth 1 sine 300 | sox --combine concatenate - farts.wav synth 1 sine 400
只能将400 Hz的1秒正弦波写入文件“farts.wav”。该文件缺少300 Hz的第一个正弦波。