42

使用 Sox,我如何将音频文件缩短 5 秒,从末尾修剪?

例如,这是从头开始修剪文件的方法:

    sox input output trim 5000

这是如何在结尾添加 5 秒的静音:

    sox input output pad 0 5000
4

3 回答 3

62

语法是sox input output trim <start> <duration>

例如sox input.wav output.wav trim 0 00:35将前 35 秒输出到output.wav.

(你可以知道使用的长度是多少sox input -n stat

从命令的SoX 文档trim

从音频中剪切部分内容。可以给出任意数量的位置;在到达第一个位置之前,音频不会发送到输出。然后效果在复制和丢弃每个位置的音频之间交替。对第一个位置参数使用值 0允许从音频的开头进行复制。

例如,

sox infile outfile trim 0 10

将复制前十秒,而

play infile trim 12:34 =15:00 -2:00

play infile trim 12:34 2:26 -2:00

将从音频的 12 分 34 秒开始播放到音频的 15 分钟(即 2 分 26 秒),然后在音频结束前两分钟继续播放。

根据dpwe 的评论位置值被解释为相对于前一个位置,除非它们以=(在这种情况下它们相对于文件的开头)或-(在这种情况下它们相对于文件的结尾)开始.

因此,在结尾处修剪五秒将是sox input output trim 0 -5

于 2012-05-02T17:18:33.707 回答
12

上面的命令是错误的,它只会让你持续 5 秒。您实际上需要使用:

sox input output reverse trim 5 reverse 

这将从文件末尾缩短 5​​ 秒。

于 2013-02-15T09:45:27.590 回答
7

我是 SoX 的新手,但注意到此页面经常出现在音频修剪的搜索结果中,并且会被许多尝试做类似事情的人看到。

因此,我想提供我个人认为最好的解决方案。

我在文件末尾遇到了John Smith Optional提到的相同的“点击”。这表明短暂的淡出可以在音频结束时消除任何故障伪影,并且确实可以正常工作。接受淡出位置参数的负值来指示音频结束之前的时间是关键。

所以我看不出比这更好的方法来实现 OP 的目标:

sox full_length.wav trimmed.wav fade 0 -5 0.01

参数 1 为“0”,因此没有淡入。参数 2 删除最后 5 秒参数 3 使用 10ms 淡入

于 2015-07-07T19:33:43.253 回答