【问题标题】:FFMPEG - Moving text to appear every 'X' SecondsFFMPEG - 移动文本每隔“X”秒出现一次
【发布时间】:2018-10-09 21:48:00
【问题描述】:

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

【问题讨论】:

    标签: ffmpeg drawtext


    【解决方案1】:

    就在documentation 中。例如,要使其每 3 秒出现一次并持续 1 秒,您可以将以下内容添加到您的 drawtext 过滤器中:

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

    更新:根据 cmets,它必须是连续滚动的文本。下面是一个文本示例,它在 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 用于每 10s 重复一次

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

    【讨论】:

    • 感谢您的回复,但它不适用于滚动文本效果。实际上,我之前尝试过添加那段代码。我认为我们可能仍然需要对 "x=(2*n)-tw" 进行一些更改
    • 编码时没有错误。但滚动文本不会每“X”秒重复一次。只滚动一次。 ffmpeg -i /test/test.mp4 -vf drawtext="fontfile=/usr/share/fonts/truetype/simhei.ttf:text='Hello World Hello World':fontcolor=white@1.0:fontsize=16:y=h-line_h-100:x=(5*n)-tw:enable=lt(mod(t\,10)\,5)" -codec:v libx264 -codec:a copy /test/output.mp4
    • 我遇到了一个小问题。我添加了 (-640) 以使滚动文本从右向左移动并完全从舞台开始(视频宽度为 640 像素)。但是当我添加 10 秒延迟 enable=gt(t\,10) 时,滚动不会完全从舞台开始。它会出现并从某个随机的“x”位置开始。我相信这会发生,因为文本已经开始移动,但由于 10 秒的延迟,它是“不可见的”。我该如何解决这个问题? y=h-line_h-300:x=w-640/25*mod(t\,100):enable=gt(t\,10)
    • w - 640/25 操作顺序可能(提示:括号):) ?我给了你解决方案,你必须找到调整它的逻辑。祝你好运。
    • @paj x= 控制 x 位置。对于从右到左,您可以使用x=w-tw-w/10*mod(t\,10),其中w 是框架宽度,tw 是文本宽度,表达式的其余部分是步骤。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2022-11-10
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2016-07-24
    • 2017-06-20
    相关资源
    最近更新 更多