Я пытаюсь размыть определенную часть видео в зависимости от определенного интервала, например, в 2-10 секунд размыть эту часть и в 12-20 секунд размыть другую, но я не могу заставить это работать. Вот команда, которую я могу сделать на данный момент
'ffmpeg -y -i with_out_sound.mp4 -filter_complex [0:v]crop=206:169:32:121,boxblur=10:enable='between(t,2,10)'[fg];[0:v]crop=206:169:62:100,boxblur=10:enable='between(t,12,20)'[fg1];[0:v[fg]overlay=32:121:enable='between(t,2,10)'[tmp];[0:v][tmp]overlay=62:100:enable='between(t,12,20)'[tmp2]-map [tmp2] with_blur.mp4'
Но с командой выше я получаю ошибкуФильтр Boxblur имеет неподключенный выход
решение1
Использовать
ffmpeg -y -i with_out_sound.mp4 -filter_complex \
"[0:v]crop=206:169:32:121,boxblur=10:enable='between(t,2,10)'[fg]; \
[0:v]crop=206:169:62:100,boxblur=10:enable='between(t,12,20)'[fg1]; \
[0:v[fg]overlay=32:121:enable='between(t,2,10)'[tmp]; \
[tmp][fg1]overlay=62:100:enable='between(t,12,20)'[tmp2]"
-map [tmp2] with_blur.mp4
Результат первого наложения должен стать фоном для второго наложения.
Ошибка произошла, потому что fg1
нигде не использовался. Все выходные данные фильтра должны быть либо 1)отображены для кодирования, 2)использованы другим фильтром или 3) отправлены в приемник.