Создать тихий mp3 из командной строки - PullRequest
18 голосов
/ 11 марта 2011

Я пытаюсь создать тихий / пустой mp3-файл (x) секунд, используя командную строку.Я подумал, что это довольно простая задача!

Кажется, LAME способен что-то сделать, но я не могу найти ничего, что может привести к достижению этой цели.

Имееткто-нибудь был в состоянии сделать что-то подобное?

Ответы [ 4 ]

33 голосов
/ 23 мая 2013

Вы можете использовать эту команду.

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

Измените <seconds> на число, указывающее количество секунд тишины, которое вам требуется (например, 60 создаст минуту).

10 голосов
/ 11 марта 2011

Отказ от ответственности: Это подход, ориентированный на 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 it:

$ lame silence.wav silence.mp3
3 голосов
/ 23 мая 2013

Избегайте неудобств при создании заголовка wav, и пусть lame обрабатывает необработанный файл:

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

настройка? = 2 дает 11 секундный файл (@ стандартные 44 кГц и т. Д. Параметры).

Примечание: это было проверено на Unix; Я понимаю, что для окон тоже есть dd и lame.

0 голосов
/ 09 апреля 2019

sox -n -r 44100 -c 2 silence.wav trim 0.0 3.0 - это создаст 3-секундный файл стерео тишины. Здесь n для обработчика пустых файлов, r - частота дискретизации, а c - количество каналов.

Тогда просто убей это:

$ lame silence.wav silence.mp3

...