这是一个用于移动文本的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'秒?
答案 0 :(得分:7)
它位于documentation。例如,为了让它每1秒钟显示1秒,您可以将以下内容添加到drawtext
过滤器中:
enable=lt(mod(t\,3)\,1)
更新:根据评论,它必须是连续滚动的文字。这是一个文本的例子,它在10秒的初始时间之后以10秒的速度滚动视频的整个宽度,然后在循环中再次消失10秒:
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
是移动速度(整个宽度为10秒),t mod 10
用于每10秒重复
启用:enable=gt(mod(t\,20)\,10)
,每20秒显示最初10秒后10秒的文字动画