Sox : 用 pad 合并两个音频文件
Posted
技术标签:
【中文标题】Sox : 用 pad 合并两个音频文件【英文标题】:Sox : merge two audio files with a pad 【发布时间】:2011-04-07 20:22:16 【问题描述】:我正在使用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 delayed.ogg pad 6
$ sox -m long.ogg delayed.ogg output.ogg
我不想创建中间文件。提前感谢您的帮助。
【问题讨论】:
【参考方案1】:您应该能够执行以下操作:
sox short.ogg -p pad 0 6|sox - long.ogg output.ogg
-p
sox 选项用于管道 - 基本上,它告诉 sox 使用标准输出作为输出。使用-
作为第二个sox 的输入实际上是说输入是stdin(恰好是前一个sox 的stdout,因为我们正在使用|
)。 pad 0 6
告诉 pad 0 秒开始和 6 秒结束。
希望这会有所帮助。
【讨论】:
谢谢!我实际上不得不添加混音选项-m
,因为没有它,整个声音都会延迟。请查看我的编辑。
我没有看问题——我写的会播放 short.ogg,等待 6 秒然后播放 long.ogg,将整个结果写入 output.ogg。无论如何,很高兴你找到了解决方案!我建议将其添加为答案并正式选择作为解决方案 - 对于其他有相同问题的人。【参考方案2】:
感谢 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
【讨论】:
如何处理多个曲目? 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 combined.mp3【参考方案3】:这是另一个受益于使用双引号的解决方案。它使命令更具可读性并且非常易于扩展:
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 示例,所以我希望这对某人有所帮助!
【讨论】:
【参考方案4】:也遇到了延迟命令。
您可以执行以下操作: sox.exe -m short.ogg long.ogg 延迟 6
这将合并两个文件,short.ogg 将在 6 秒后开始进入 long.ogg
【讨论】:
【参考方案5】:因为我还不允许发表评论,我只想说我喜欢 Fabien 的回答,因为它也可以与“NULL”声音文件一起使用:例如,
sox --combine concatenate "|sox -n -p synth 1 sine 300" "|sox -n -p synth 1 sine 400" useful.wav
将写入 1 秒 300 Hz 的正弦音,然后写入 1 秒 400 Hz 的正弦音,并将其写入文件“useful.wav”。
sox -n -p synth 1 sine 300 | sox --combine concatenate - farts.wav synth 1 sine 400
只会将 1 秒的 400 Hz 正弦波写入文件“farts.wav”。该文件缺少第一个 300 Hz 的正弦波。
【讨论】:
以上是关于Sox : 用 pad 合并两个音频文件的主要内容,如果未能解决你的问题,请参考以下文章