Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio Sox:使用pad合并两个音频文件_Audio_Merge_Delay_Sox_Pad - Fatal编程技术网

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

Audio Sox:使用pad合并两个音频文件,audio,merge,delay,sox,pad,Audio,Merge,Delay,Sox,Pad,我正在使用sox工具,我想合并两个音频文件,比如long.ogg和short.ogg来输出一个文件output.ogg。 这非常容易使用$sox-m long.ogg short.ogg output.ogg 问题是,我希望short.ogg在n秒后播放(而long.ogg应该从头开始)。为此,我发现了pad效应。但是我不理解只延迟short.ogg输入文件而不是long.ogg输入文件的语法 我找到了一种(肮脏的)方法(n=6): 我希望不必创建中间文件。提前感谢您的帮助。您应该能够执行以下操

我正在使用
sox
工具,我想合并两个音频文件,比如
long.ogg
short.ogg
来输出一个文件
output.ogg
。 这非常容易使用
$sox-m long.ogg short.ogg output.ogg

问题是,我希望
short.ogg
在n秒后播放(而
long.ogg
应该从头开始)。为此,我发现了pad效应。但是我不理解只延迟
short.ogg
输入文件而不是
long.ogg
输入文件的语法

我找到了一种(肮脏的)方法(n=6):


我希望不必创建中间文件。提前感谢您的帮助。

您应该能够执行以下操作:

sox short.ogg -p pad 0 6|sox - long.ogg output.ogg
-p
sox的选项用于管道-基本上,它告诉sox使用stdout作为输出。使用
-
作为第二个sox的输入实际上是说输入是stdin(这恰好是前一个sox的stdout,因为我们使用
|
)<代码>键盘0 6在开始时告诉键盘0秒,在结束时告诉键盘6秒


希望这能有所帮助。

多亏了icyrock,我终于找到了解决方案。我正在使用:

$ sox short.ogg -p pad 6 0 | sox - -m long.ogg output.ogg
对于多音轨(奥兰多的学分):


下面是另一个得益于使用双引号的解决方案。它使命令更具可读性,并且非常易于扩展:

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、silence、dva、silence、tri、silence)

应用于原始帖子,我们会得到:

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 delay 6


这将合并两个文件,short.ogg将从6秒开始变成long.ogg,因为我还不允许发表评论,我只想说我喜欢Fabien的答案,因为它也可以与“NULL”声音文件一起使用:例如

sox --combine concatenate "|sox -n -p synth 1 sine 300" "|sox -n -p synth 1 sine 400" useful.wav
将在300Hz下写入1秒的正弦音,然后在400Hz下写入1秒的正弦音,并将其写入文件“有用的.wav”


将仅在400 Hz时向文件“farts.wav”写入1秒正弦波。文件缺少300 Hz时的第一个正弦波。

谢谢!实际上,我不得不添加混音选项
-m
,因为没有它,整个声音都会延迟。请查看我的编辑。我没有阅读问题-我写的内容将播放short.ogg,等待6秒,然后播放long.ogg,将整个结果写入output.ogg。不管怎样,很高兴你找到了解决办法!我建议添加它作为一个答案,并正式选择它作为解决方案-对于其他有相同问题的人。如何使用多个轨道来解决这个问题?3,4,5个曲目用于多个曲目:sox starts-last.mp3-p pad 2 0 | sox--m starts-second.mp3-p pad 2 0 | sox--m starts-first.mp3组合
sox −−combine sequence  "|sox long.ogg -p pad 0 6" "|sox short.ogg -p pad 0 1" newfile.ogg
sox --combine concatenate "|sox -n -p synth 1 sine 300" "|sox -n -p synth 1 sine 400" useful.wav
sox -n -p synth 1 sine 300 | sox --combine concatenate - farts.wav synth 1 sine 400