gpt4 book ai didi

python - 如何将 list[] 中出现的所有内容插入 CompositeVideoClip

转载 作者:行者123 更新时间:2023-12-01 07:14:02 24 4
gpt4 key购买 nike

我有一个视频,我想在其中插入动态数量的 TextClip。我有一个 while 循环,用于处理实际创建不同 TextClip 并为它们提供单独的持续时间和开始时间的逻辑(这有效)。然而,我在实际“编译”视频本身并插入这些文本时遇到了问题。

用于创建 TextClip 的代码(有效)。

text = mpy.TextClip(str(contents),
color='white', size=[1700, 395], method='caption').set_duration(
int(list[i - 1])).set_start(currentTime).set_position(("center", 85))

print(str(i) + " written")
textList.append(text)

用于“编译”视频的代码。 (这不起作用)

final_clip = CompositeVideoClip([clip, len(textList)])
final_clip.write_videofile("files/final/TEST.mp4")

我尝试了几种方法,但现在我陷入困境,无法找到继续的方法。在我得到很多“答案”告诉我在编译时进行 while 循环之前,我只想说,实际编译大约需要 5 分钟,我有 100-500 个不同的文本需要在最终视频中实现,这需要天。相反,我想将它们一一添加,然后进行 1 个大型最终编译,我知道这将花费比 5 分钟稍长的时间,但仍然比 2-3 天快得多。

对于那些之前可能没有使用过 moviepy 的人,我将发布一段实际有效的“我的代码”片段,但不是以我需要的方式。

final_clip = CompositeVideoClip([clip, textList[0], textList[1], textList[2]])
final_clip.write_videofile("files/final/TEST.mp4")

这完全按照预期工作(添加 3 个文本),但是我不/无法事先知道每个视频中会有多少文本,因此我需要以某种方式插入动态数量的 textList[] 进入函数。

亲切的问候,

最佳答案

不确定 clip, 之后的参数是什么这样做(你可以澄清),但是如果通过插入可变数量 textList[i] 来解决问题args,解决方案很简单:

CompositeVideoClip([clip, *textList])

星号解压列表(或任何可迭代);例如:arg=4,5 -- def f(a,b): return a+b -- f(*arg)==9 。如果您有很多 textList s,您可以通过嵌套列表或字典来管理它们:

textListDict = {'1':textList1, '2':textList2, ...}
textListNest = [textList1, textList2, ...] # probably preferable - using for below

# now iterate:
for textList in textListNest:
final_clip = CompositeVideoClip([clip, *textList])

<小时/> 拆包演示:

def show_then_join(a, b, c):
print("a={}, b={}, c={}".format(a,b,c))
print(''.join("{}{}{}".format(a,b,c)))

some_list = [1, 2, 'dog']
show_then_sum(*some_list) # only one arg is passed in, but is unpacked into three
# >> a=1, b=2, c=dog
# >> 12dog

关于python - 如何将 list[] 中出现的所有内容插入 CompositeVideoClip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com