FFMPEG - 移动文本显示每个'X'秒

0 ffmpeg drawtext

这是用于移动文本的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'秒出现一次?

aer*_*tal 7

它就在文档中.例如,要使其每3秒显示一次持续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
Run Code Online (Sandbox Code Playgroud)

细节:

  • 水平移动: 输入宽度x=w/10*mod(t\,10)在哪里w,t是时间,w/10是移动速度(整个宽度为10s),t mod 10用于每10秒重复一次

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