ffmpeg - как работает команда перемещения оверлея / текста?

В Ffmpeg вы можете создавать движущийся текст:

ffmpeg -y -t 10 -s qcif -f rawvideo -pix_fmt rgb24 -s 1280x720 -i /dev/zero -g 1 -r 24 -vf drawtext="fontfile=~/fonts/Trebuchet_MS.ttf:text='thing crawls':fontsize=155:fontcolor=red:y=h-20*t" wow.mpg

Так что это даст мне черную рамку с надписью "сканирует вещи" медленно идет снизу вверх ..

Если я знаю продолжительность видео (20 секунд) и хочу, например, создать & quot; вещь падает & quot; который начинается в верхней части экрана в момент времени 0 и доходит до нижней части экрана до 00:00:20, как мне это сделать?

Также можно ли создать ситуацию, когда текст начнет двигаться сверху вниз, но остановится на середине экрана?

Ответы на вопрос(1)

Решение Вопроса

Документы FFmpeg приведите полный список переменных, с которыми вам придется работать при использовании фильтра drawtext, но для мобильного текста есть некоторые особые интересы:

‘n’
the number of input frame, starting from 0

‘t’
timestamp expressed in seconds, NAN if the input timestamp is unknown

С их помощью вы можете установить положение текста относительно того, сколько кадров уже было просмотрено. Это то, чтоy=h-20*t Выражение в вашем примере делает. Какt увеличивается, текст перемещается ближе к началу видео какh-20*t уменьшается.

Чтобы ваш пример "вещь упала", вам нужен термин, подобный20*t вместо. Посколькуy позиция начинается с 0 в верхней части видео, аt увеличивается, он будет двигаться вниз по экрану.

Для текста, который останавливается в середине экрана, вы, возможно, могли бы заняться какой-нибудь изящной математикой или просто использовать FFmpeg.богатый набор логических функций, Что-то вродеy=t*20*lte(t*20,h/2) + h/2*gt(t*20,h/2) который перемещает текст в то время какt*20 меньше половины высоты, то сохраняетy положение вh/2 один разt*20 больше половины высоты.

 Stpn16 июн. 2012 г., 19:25
отлично спасибо большое!

Ваш ответ на вопрос