Sox:使用pad合并两个音频文件

我正在使用
sox
工具,我想合并两个音频文件,让我们说
long.ogg
short.ogg
输出一个文件
output.ogg
。 使用
$ sox -m long.ogg short.ogg output.ogg
非常容易。 事情是,我希望在n秒之后播放
short.ogg
(而
long.ogg
应该从头开始)。为此,我找到了垫效果。但我不明白只延迟
short.ogg
输入文件的语法,而不是
long.ogg
。 我找到了一种(脏)方式(n = 6):
$ sox short.ogg delayed.ogg pad 6
$ sox -m long.ogg delayed.ogg output.ogg
我不想创建一个中间文件。在此先感谢您的帮助。     
已邀请:
你应该可以这样做:
sox short.ogg -p pad 0 6|sox - long.ogg output.ogg
so11的sox选项用于管道 - 基本上,它告诉sox使用stdout作为输出。使用
-
作为第二个sox的输入实际上是说输入是stdin(恰好是前一个sox的标准输出,因为我们用
|
管道输入)。
pad 0 6
告诉垫在开始时0秒,在结束时6秒。 希望这可以帮助。     
感谢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
    
这是另一个受益于双引号使用的解决方案。它使命令更易读,更容易扩展:
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示例,所以我希望这有助于某人!     
也可以通过延迟命令。 您可以执行以下操作: sox.exe -m short.ogg long.ogg延迟6 这将合并两个文件,short.ogg将在long.ogg中启动6秒     
因为我还没有被允许评论,我只想说我喜欢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的第一个正弦波。     

要回复问题请先登录注册