DrawFext, Drawbox или наложение только на один кадр, используя FFmpeg - PullRequest
5 голосов
/ 02 ноября 2011

Я использую drawtext и drawbox avfilters на FFmpeg, две из самых плохо документированных функций, известных человеку.

Я изо всех сил стараюсь работатьесли и как я могу использовать их только в одном кадре, т. е. drawtext в кадре 22.

Текущая команда:

ffmpeg -i test.wmv -y -b 800k -f flv -vcodec libx264 -vpre default -s 768x432 \
  -g 250 -vf drawtext="fontfile=/home/Cyberbit.ttf:fontsize=24:text=testical:\
  fontcolor=green:x=100:y=200" -qscale 8 -acodec libfaac -sn -vstats out.flv

Два элемента, упомянутых в документации являются n и t .Тем не менее, я, кажется, только могу использовать их в х и у.Не в тексте или даже в качестве других параметров.

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

1 Ответ

3 голосов
/ 04 августа 2012

В отличном примере с 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 останется видимым навсегда) или разбить видео на несколько частей, нарисовать нужные фрагменты и затем повторно объединить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...