Я хочу создать звук, частота которого зависит от времени, скажем, что частота time ms равна time Гц, следовательно, через 20 с у вас есть все слышимые частоты. Например, с помощью ffmpeg вы можете использовать переменную времени (% T) для наложения времени каждого кадра на видео. Я думал, что смогу использовать переменную% T для генерации такой волны. я пробовал

ffmpeg -f lavfi -i "sine=frequency=%T*1000:sample_rate=44100:duration=20" -c:a pcm_s16le allfreq.wav

но, похоже, фильтр sine должен иметь фиксированную частоту.

Я пытался использовать ffmpeg, но не имеет значения, какую программу вы используете, если она бесплатная (легкие загрузки приветствуются).

2 ответа2

2

Пока вы начинаете говорить о видео, кажется, что вы действительно заинтересованы в аудио. Вы понимаете, что функция sine верна, что для нее требуется фиксированная частота, поскольку вы устанавливаете базовую частоту таким образом. Это все равно будет синус "вокруг" этой частоты.

То, что вы на самом деле пытаетесь сделать, это генерировать часть синуса или, что более вероятно, линейную функцию, постоянно увеличивающую частоту. Чтобы сделать это, вы можете попробовать использовать такую программу, как Audacity и Chrip Generator, которая, как она звучит, будет именно тем, что вы ищете. Это позволило бы вам генерировать звук, начинающийся с частоты X, и позволить ему заканчиваться в Y после времени N.

1

Если вы используете ffmpeg, у вас есть фильтр aevalsrc:

ffmpeg -f lavfi -i "aevalsrc='sin(1000*t*2*PI*t)':s=44100:d=20" -c:a pcm_s32le allfreq.wav

Вы должны быть в состоянии эмулировать все параметры генератора чирп, как только вы выясните необходимое выражение :)

Я использовал 32-разрядный формат с плавающей точкой в качестве выходного формата, так как это рабочий формат Audacity.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .