我在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',}]我知道他们会互相重叠,但这不是目前的问题,只是除了最后一个价值观没有在视频上显示。
任何帮助都将不胜感激。
提前谢谢你。
发布于 2019-09-08 10:48:51
您需要重新分配输入(或使用中间变量)。在每个循环中所发生的事情是,您正在获取新的input并在其上绘制文本。
你可以做这样的事
...
input = input.drawtext(
...我相信,虽然我没有处理过很多视频。例如,您可能需要做更多的工作,以确保文本不只是覆盖本身。
https://stackoverflow.com/questions/57841173
复制相似问题