FFMPEG - 移动文本以每"X"秒显示一次



这是一个ffmpeg命令,用于移动文本(从左到右)

ffmpeg -i input.mp4 -vf drawtext="fontfile=/path/to/fonts/FreeSans.ttf:text='Hello World':fontcolor=white@1.0:fontsize=16:y=h-line_h-100:x=(2*n)-tw" -codec:v libx264 -codec:a copy output.mp4

我想知道如何使移动文本在'X'秒后开始并每'X'秒出现一次

就在文档中。例如,要使它每3秒出现一次,持续1秒,您可以向drawtext过滤器添加以下内容:

enable=lt(mod(t,3),1)

更新:根据评论,它必须是一个连续滚动的文本。下面是一个文本的示例,在初始时间为10s之后,以10s的时间滚动整个视频的宽度,然后再消失10s,在一个循环中:

ffmpeg -i input.mp4 -filter:v drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSans.ttf:text='Hello World':fontcolor=white@1.0:fontsize=16:y=h-line_h-100:x=w/10*mod(t,10):enable=gt(mod(t,20),10)" -codec:v libx264 -codec:a copy -y output.mp4

细节:

  • 水平运动:x=w/10*mod(t,10)其中w为输入宽度,t为时间,w/10为移动速度(全宽度10s), t mod 10每10s重复一次

  • 启用:enable=gt(mod(t,20),10),在初始10s后每20s显示10s的文本动画

最新更新