代码之家  ›  专栏  ›  技术社区  ›  Kevin

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

  •  1
  • Kevin  · 技术社区  · 9 年前

    这是一个用于移动文本(从左到右)的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”秒钟出现一次?

    1 回复  |  直到 9 年前
        1
  •  9
  •   mega6382    6 年前

    就在那里 documentation 。例如,要使其每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
    

    细节:

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

    • 有可能: enable=gt(mod(t\,20)\,10) ,在最初的10秒之后,每隔20秒显示10秒的文本动画