You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何调整FFmpeg drawtext滤镜,让文字从中心/右侧开始左移滚动

解决FFmpeg文字从中心/右侧开始滚动的问题

我看了你的需求,当前命令里的x=-200*t确实会让文字从左侧边缘开始向左移动,导致开头内容直接移出视野。下面给你两种调整方案,分别实现从右侧开始滚动从中心开始滚动的效果:

方案1:文字从右侧开始,向左滚动(推荐,确保开头文字完全进入视野)

修改后的FFmpeg命令如下:

echo shell_exec('ffmpeg -loop 1 -i slide2.jpg -vf scale=-2:1080,drawtext="textfile=text.txt:expansion=normal:fontfile=FreeSerif.otf: y=h-line_h-20:x=w + 100 - 200*t: fontcolor=white: fontsize=50" -pix_fmt yuv420p -t '.$words_count.' -movflags +faststart textover10.mp4 -report');

参数解释:

  • x=w + 100 - 200*t:这里的w代表视频宽度,100是额外的缓冲距离(避免文字一开始就贴在边缘)。当t=0时,文字位于视频右侧100像素的位置,随着时间t增加,x值逐渐减小,文字就会平滑向左滚动,完整进入视野后再慢慢移出左侧。
  • 你可以根据需要调整200这个速度值(数字越大滚动越快),或者修改100来调整文字初始位置的缓冲距离。

方案2:文字从视频中心开始,向左滚动

如果希望文字从中心位置出发向左滚动,用这个命令:

echo shell_exec('ffmpeg -loop 1 -i slide2.jpg -vf scale=-2:1080,drawtext="textfile=text.txt:expansion=normal:fontfile=FreeSerif.otf: y=h-line_h-20:x=(w - text_w)/2 - 200*t: fontcolor=white: fontsize=50" -pix_fmt yuv420p -t '.$words_count.' -movflags +faststart textover10.mp4 -report');

参数解释:

  • x=(w - text_w)/2 - 200*t(w - text_w)/2会自动计算出文字在视频水平居中的位置,当t=0时文字刚好在中心,之后随着t增加,x值减小,文字向左滚动。
  • 同样可以调整200来改变滚动速度。

额外提示:

  • 如果你的text.txt里是多行文字,可能需要调整y参数或者添加line_spacing来优化垂直位置。
  • 可以加上shadowcolor=black:shadowx=2:shadowy=2给文字加阴影,提升在背景图上的可读性。

内容的提问来源于stack exchange,提问作者Femzy

火山引擎 最新活动