2015-05-17 3 views
1

Я хочу сделать что-то вроде этих: http://www.youtube.com/watch?v=AtM-f20XV4E вы можете видеть, что водяной знак, который изменит положение каждые две секунды ...Создание прыжки текст водяного знака

Но мне это нужно для DrawText фильтра.

Итак, я уже понимаю, как изменить положение текста каждые несколько секунд .. но понятия не имею, - как сохранить новую позицию :) есть код, который я прямо сейчас ..

ffmpeg.exe -i myVideo.mov -c:v libx264 -preset veryfast -crf 25 -tune zerolatency -vendor ap10 -pix_fmt yuv420p -filter:v drawtext=fontfile=arial.ttf:text=MY_WATERMARK_TEXT:fontcolor=white:alpha=0.5:fontsize=74:box=1:boxcolor=red:x=if(eq(mod(t\,1)\,0)\,1000\,10):y=(h-text_h-line_h)/2 -c:a copy outVideo.mp4 

переместить мой текст в новое положение каждые 1 секунду. но затем немедленно изменить позицию назад, конечно.

Итак, я застрял в этом ... как сохранить новую позицию? Может быть, я должен использовать ld() и st()?

ответ

3

ОК. Это было легче, чем я думал ..

Существует ответ:

ffmpeg.exe -i myVideo.mov -c:v libx264 -preset veryfast -crf 25 -tune zerolatency -vendor ap10 -pix_fmt yuv420p -filter:v drawtext=fontfile=arial.ttf:text=MY_WATERMARK_TEXT:fontcolor=white:alpha=0.5:fontsize=74:box=1:boxcolor=red:x=if(eq(mod(n\,18)\,0)\,sin(random(1))*w\,x):y=if(eq(mod(n\,18)\,0)\,sin(random(1))*h\,y) -c:a copy outVideo.mp4 

Это основная часть:

х = если (уравнение (мод (п \, 18) \, 0) \, sin (случайный (1)) * w \, x):

y = if (eq (mod (n \, 18) \, 0) \, sin (random (1)) * h \, y)

В этом примере Text_Watermark будет менять позицию на случайную в каждом 18-м кадре.

+0

отлично работает для меня. – acohen

Смежные вопросы