#filter #ffmpeg #volume
#Фильтр #ffmpeg #громкость
Вопрос:
Я использую эту команду для отключения звука :
ffmpeg -i input.mp4 -af "volume=enable ='between(t,10,15)':volume=0, volume=enable ='between(t,20,25)':volume=0, volume=enable ='between(t,30,35)':volume=0, volume=enable ='between(t,40,45)':volume=0, volume=enable ='between(t,50,55)':volume=0" -c:v copy -c:a aac -b:a 192K output.mp4
Как я могу повторить или зациклить этот фильтр, не записывая его снова и снова?
Например, эта команда увеличивает масштаб видео через определенные секунды :
ffmpeg -i input.mp4 -vf "zoompan=z='if(lte(mod(time,6),3),zoom 1.5,zoom-3)':x='iw/2-(iw/zoom)/2':y='ih/2-(ih/zoom)/2':d=1:fps=24" -c:v libx264 -crf 20 -preset:v ultrafast -profile:v high -g 60 -threads 2 -c:a aac -b:a 192K output.mp4
Как я могу использовать подобный фильтр громкости, чтобы отключить звук через определенные секунды?
Ответ №1:
Совет: вы можете настроить несколько временных диапазонов или условий в одном выражении enable, добавив их, например
ffmpeg -i input.mp4 -af "volume=volume=0:enable ='between(t,10,15) between(t,20,25) between(t,30,35) between(t,40,45) between(t,50,55)'" -c:v copy -c:a aac -b:a 192K output.mp4
Если шаблон регулярный, например, «каждые 10 секунд, в течение 2 секунд», обычно используется функция mod, которая возвращает остаток от левого операнда с помощью правого операнда. Затем вы добавляете сравнительную функцию типа lte
(меньше или равно)
В этом случае,
ffmpeg -i input.mp4 -af "volume=volume=0:enable ='lte(mod(t,10),2)'" -c:v copy -c:a aac -b:a 192K output.mp4