您可以使用此命令。
ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono -t <seconds> -q:a 9 -acodec libmp3lame out.mp3
将<seconds>
更改为表示所需静默时间的秒数(例如,60
将创建一分钟)。
ffmpeg -ar 48000 -t <duration> -f s16le -acodec pcm_s16le -ac 2 -i /dev/zero -acodec libmp3lame -aq 4 <filename>
对我来说速度明显更快。 - frumbert免责声明: 这是一个针对Unix操作系统的方法 (虽然sox是跨平台的,并且在Windows上也可以完成任务)。
你需要sox - "声音处理程序的[跨平台]瑞士军刀"。
这个Perl脚本包装器可以帮助你生成任意秒数的静默: http://www.boutell.com/scripts/silence.html
$ perl silence.pl 3 silence.wav
silence.pl
非常简短,我在这里包含它,因为它是公共领域:
#!/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");
接着只需使用lame
命令:
$ lame silence.wav silence.mp3
sox -n -r 44100 -c 2 silence.wav trim 0.0 3.0
- 这将创建一个持续3秒的立体声静音文件。
这里n表示空文件操作程序,r是采样率,c是通道数。
然后只需使用lame命令即可:
$ lame silence.wav silence.mp3
dd if=/dev/zero bs=1M count=? | lame -r - - > silence.mp3
设置 ?=2 可以生成一个11秒的文件(在标准44KhZ等参数下)。
注意:此方法已在Unix上测试通过;我知道Windows也有dd和lame。