【问题标题】:Chain `drawtext` with ffmpeg-python使用 ffmpeg-python 链接“drawtext”
【发布时间】:2020-01-10 11:06:30
【问题描述】:

我的 python 脚本中有一个函数可以通过 API 循环遍历一些给定的文本,但我在绘制多个文本值时遇到问题:-

def add_text(title, text_lines):
    input = ffmpeg.input(f'output/{title}.mp4')
    for text in text_lines:
        output = input.drawtext(
            fontsize='24',
            start_number=0,
            text=text['text'],
            fontcolor='white',
            escape_text=True
        )
    ffmpeg.output(output, f'output/{title}-final.mp4').run()

如果我将单个测试值传递到循环中,则此方法有效,但如果我传递 2 个或更多值,则仅将最后一个值绘制到视频上。

我如何能够遍历 text_lines 并构建输出以包含输出文件中的所有值。

text_lines 的数组如下所示:-

[{text: 'Value 1'}, {text: 'Value 2'}, {text: 'Value 3',}]

我知道它们会相互重叠,但目前这不是问题,只是视频中没有显示除最后一个之外的值。

任何帮助将不胜感激。

提前谢谢你。

【问题讨论】:

    标签: python python-3.x ffmpeg


    【解决方案1】:

    您需要重新分配输入(或使用中间变量)。每个循环中发生的事情是您正在使用 fresh input 并在其上绘制文本。

    你可以做类似的事情

    ...
            input = input.drawtext(
    ...
    

    我相信,虽然我没有过多地处理视频。例如,您可能需要做更多工作以确保文本不会全部叠加在自身之上。

    【讨论】:

    • 感谢您的回复。现在只是测试,我会告诉你结果。
    • 很高兴听到它!
    猜你喜欢
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2017-02-07
    • 2018-05-05
    • 2012-05-30
    相关资源
    最近更新 更多