python - 使用 ffmpeg-python 链接 `drawtext`

标签 python python-3.x ffmpeg

我的 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',}]

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

任何帮助将不胜感激。

先感谢您。

最佳答案

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

你可以做类似的事情

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

我相信,虽然我没有太多的视频工作。就像,您可能需要做更多工作以确保文本不会全部叠加在自身之上。

关于python - 使用 ffmpeg-python 链接 `drawtext`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57841173/

相关文章:

python - 如何修复:unsatisfiableerror: the following specifications were found to be in conflict

Python 3 - 模块和包困惑 - 架构

python - 使用Python在PE文件中搜索字符串

python-3.x - 为什么我的 Flask 应用程序在使用 `python app.py` 执行时可以工作,但在使用 `heroku local web` 或 `flask run` 时却不能工作?

python - 如何在 python 中使用 youtube_dl 和 ffmpeg 剪掉前 5 秒

python - 表函数不在 shell 中打印

python - 在 Bash 脚本中获取/激活 Python VirtualEnv

Python 子/父类,子类返回字符串两次?

ffmpeg - 在 x264 中实现的 CRF 算法

c++ - 使用 FFMPEG 将 RGB 图像序列保存到 .mp4 时遇到问题