1

Я пытаюсь уменьшить громкость через определенный промежуток времени с помощью ffmpeg.exe. Допустим, у меня есть 5-минутное видео, и я хочу уменьшить громкость между 00:01:30 и 00:02:00. Я читал, что мы можем использовать разные параметры одновременно, но я не мог понять это.

Любая помощь будет принята с благодарностью.

1 ответ1

4

Вы можете сделать это с фильтром комплекса:

ffmpeg -i in.mp4 -filter_complex "[0:v]null[out2];[0:a]atrim=duration=90[a];\
[0:a]atrim=start=90:duration=30,volume=0.1,asetpts=PTS-STARTPTS[b];[a][b]concat=v=0:a=1[c];\
[0:a]atrim=start=120,asetpts=PTS-STARTPTS[d];[c][d]concat=v=0:a=1[out1]" \
-acodec mp2 -map [out1] -map [out2] out.mp4

Уменьшает громкость до 0,1 (1,0 заполнено) в сегменте с 90 до 120 секунд. Как это устроено? Он ничего не делает с видеопотоком (фильтр ноль), просто чтобы включить его в график фильтра. Затем обрезает первые 90 секунд из аудиопотока, затем обрезает 30 секунд (90-120) из аудиопотока и уменьшает громкость до 0,1. Затем объединяет последние 2 аудиопотока с concat. Затем снова обрезает оставшийся аудиопоток и снова объединяет его.

Надеюсь, поможет.

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