В отличном примере с FFmpeg, который всегда держит вас в тонусе, это тривиально для drawtext
и чрезвычайно болезненно для drawbox
.
Ключ в том, что drawtext
включает параметр draw
:
рисовать
Установите выражение, которое указывает, должен ли быть нарисован текст. Если выражение оценивается в 0, текст не рисуется. Это полезно для указания того, что текст должен отображаться только при соблюдении определенных условий.
Таким образом, чтобы показывать только текст в кадре 22:
ffmpeg -i in.wmv -vf drawtext="fontfile=font.ttf:text='blah':draw='eq(n,22)'" out.flv
drawbox
не имеет параметра draw
, и нет общего способа эмулировать его, поэтому вам остается делать что-то вроде извлечения фрагмента видео, на которое вы хотите поставить рамку, и затем наложения его со смещением :
ffmpeg -i in.wmv -t 1 -ss 10 -vf drawbox=10:10:20:20:red boxed.flv
ffmpeg -i in.wmv -itsoffset 10 -i boxed.flv -filter_complex overlay out.flv
(хотя при этом последний кадр из boxed.flv
останется видимым навсегда) или разбить видео на несколько частей, нарисовать нужные фрагменты и затем повторно объединить.