Настройка уровней громкости с помощью ffmpeg afade

Вопрос или проблема

У меня возникли проблемы со следующей командой ffmpeg:

ffmpeg -i 20s.wav -af "afade=t=out:st=2:d=1:silence=0.07, afade=t=in:st=5:d=1" out.wav

Что я ожидаю от этого: на 2 секунде уменьшить громкость до 0.07 за 1 секунду. Затем на 5 секундной метке вернуть громкость обратно к единице (значение по умолчанию 1.0) за 1 секунду.

Вместо этого результат начинается с уровня громкости 0.0. Затем на 5 секундах громкость увеличивается до 0.07 и остается на этом уровне на протяжении файла.

Есть идеи, как добиться желаемого результата? Спасибо!

Вы можете сделать это без конкатенации, используя фильтры с редактированием временной шкалы
https://ffmpeg.org/ffmpeg-filters.html#Timeline-editing

обновленная команда

ffmpeg -i 20s.wav -af "afade=enable="between(t,2,3)":t=out:st=2:d=1:silence=0.07,volume=enable="between(t,3,5)":volume=0.07,afade=enable="between(t,5,6)":t=in:st=5:d=1:silence=0.07" out.wav

фильтр для ограничения затухания между 2 и 3 секундам
afade=enable="between(t,2,3)":t=out:st=2:d=1:silence=0.07

фильтр для обеспечения того, чтобы время между затуханиями было 0.07 вместо 1
volume=enable="between(t,3,5)":volume=0.07

фильтр для ограничения появления звука между 5 и 6 секундами
afade=enable="between(t,5,6)":t=in:st=5:d=1:silence=0.07

Ответ или решение

Для достижения желаемого эффекта изменения уровней громкости с помощью FFmpeg, вам необходимо использовать корректные параметры фильтров, которые позволяют точно определить временные рамки для каждого эффекта. Ваша задача заключается в создании равномерного перехода громкости от полной громкости к 0,07 дБ за одну секунду, а затем возвращения к полной громкости за 1 секунду на 5-й секунде.

Ваш первоначальный командный вызов не учитывает временные рамки, из-за чего и возникает проблема. Вместо этого, вы можете использовать следующие фильтры и настройки:

ffmpeg -i 20s.wav -af "afade=enable='between(t,2,3)':t=out:st=2:d=1:silence=0.07,volume=enable='between(t,3,5)':volume=0.07,afade=enable='between(t,5,6)':t=in:st=5:d=1:silence=0.07" out.wav

Объяснение параметров:

  1. afade:

    • afade=enable='between(t,2,3)':t=out:st=2:d=1:silence=0.07
      • Этот фильтр отвечает за затухание звука. Он будет активирован между 2-й и 3-й секундой (between(t,2,3)), уменьшает громкость до 0 в течение 1 секунды (с 2 до 3 секунд).
  2. volume:

    • volume=enable='between(t,3,5)':volume=0.07
      • Находясь между 3-й и 5-й секундами, этот фильтр устанавливает уровень громкости на 0.07. Это говорит о том, что на этой временной шкале звук будет звучать на фиксированном уровне громкости.
  3. afade (второй раз):

    • afade=enable='between(t,5,6)':t=in:st=5:d=1:silence=0.07
      • Этот фильтр активируется между 5-й и 6-й секундами и восстанавливает громкость обратно до полной (1) в течение 1 секунды.

Заключение:

Эти изменения обеспечивают плавный переход уровня громкости по вашему запросу. После запуска команды, вы получите файл out.wav, который будет иметь ожидаемые вами изменения громкости в заданные моменты времени.

Если у вас возникнут дальнейшие вопросы или потребуется помощь с другими аспектами работы в FFmpeg, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...