24

我正在尝试使用命令行创建一个 (x) 秒的静默/空 mp3 文件。我认为这是一个非常简单的任务!

似乎LAME能够做这样的事情,但我找不到任何可以实现这一目标的东西。

有没有人能够做这样的事情?

4

4 回答 4

57

您可以使用此命令。

ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono -t <seconds> -q:a 9 -acodec libmp3lame out.mp3

更改<seconds>为表示您需要的静音秒数的数字(例如,60将创建一分钟)。

于 2013-05-23T13:37:31.823 回答
11

Disclaimer: This is a unix-oriented approach (although sox is cross-platform and should get it done on windows only as well).

  • You'll need sox - "the [cross-platform] Swiss Army knife of sound processing programs".

  • This wrapper perl script, helps you generate any seconds of silence: http://www.boutell.com/scripts/silence.html

    $ perl silence.pl 3 silence.wav
    

silence.pl is quite short, so I include it here, since it's public domains:

#!/usr/bin/perl

$seconds = $ARGV[0];
$file = $ARGV[1];
if ((!$seconds) || ($file eq "")) {
        die "Usage: silence seconds newfilename.wav\n";
}

open(OUT, ">/tmp/$$.dat");
print OUT "; SampleRate 8000\n";
$samples = $seconds * 8000;
for ($i = 0; ($i < $samples); $i++) {
        print OUT $i / 8000, "\t0\n";
}
close(OUT);

# Note: I threw away some arguments, which appear in the original
# script, and which did not worked (on OS X at least)
system("sox /tmp/$$.dat -c 2 -r 44100 -e signed-integer $file");
unlink("/tmp/$$.dat");

Then just lame it:

$ lame silence.wav silence.mp3
于 2011-03-11T17:46:09.630 回答
4

避免创建 wav 头的麻烦,让 lame 处理原始文件:

dd if=/dev/zero bs=1M count=? | lame -r - - > silence.mp3

设置 ?=2 给出 11 秒的文件(@ 标准 44KhZ 等...参数)。

注意:这是在 Unix 上测试过的;我知道 Windows 也有 dd 和 lame 。

于 2013-05-23T12:55:57.890 回答
4

sox -n -r 44100 -c 2 silence.wav trim 0.0 3.0 - 这将创建一个 3 秒的立体声静音文件。这里n表示空文件处理程序,r是采样率,c是通道数。

然后跛脚:

$ lame silence.wav silence.mp3

于 2019-04-09T10:08:20.397 回答