Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
612 views
in Technique[技术] by (71.8m points)

ffmpeg moving text drawtext

I'm using ffmpeg library to draw text on video in specific time and i'm success to do that Now i need to move the text from position to another and i can't do that so can any one suggest me how to do that

i'm using this command to move text from top to down but i can't determine the x and Y to move from the x,y to specific x,y

ffmpeg -i VideoInput.mp4 -vf "drawtext=enable='between(t,12,14)':fontfile=myfont.otf:text='Test test':x=(w-text_w)/2:y=w/50*mod(t,2):fontsize=65" -acodec copy outputVideo.mp4
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use

ffmpeg -i VideoInput.mp4 
       -vf "drawtext=enable='between(t,12,14)':fontfile=myfont.otf:text='Test test': 
           x='x1+(x2-x1)*(t-t1)/(t2-t1)':y='y1+(y2-y1)*(t-t1)/(t2-t1)':fontsize=65" 
       -acodec copy outputVideo.mp4

where

x1 and y1 are initial co-ordinates; x2 and y2 are final co-ordinates; t1 and t2 are start and end times; in your given command, 12 and 14.

These above need to be replaced with their values in the command.


To give a 1 second stay at the end,

ffmpeg -i VideoInput.mp4 
       -vf "drawtext=enable='between(t,12,15)':fontfile=myfont.otf:text='Test test': 
           x='if(lt(t-t2+1,0),x1+(x2-x1)*(t-t1)/(t2-t1-1),x)': 
           y='if(lt(t-t2+1,0),y1+(y2-y1)*(t-t1)/(t2-t1-1),y)':fontsize=65" 
       -acodec copy outputVideo.mp4

Here t2 includes the stay, so movement from 12 to 14 + 1 second hold. The t2 in enable is changed as well.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...