import glob
import os
from natsort import natsorted
from moviepy.editor import *
base_dir = os.path.realpath("./images/")
print(base_dir)
gif_name = 'pic'
fps = 24
file_list = glob.glob('./images/*.jpg') # Get all the pngs in the current directory
file_list_sorted = natsorted(file_list,reverse=False) # Sort the images
clips = [ImageClip(m).set_duration(5)
for m in file_list_sorted]
print (clips)
text_list = ["Piggy", "Kermit", "Gonzo", "Fozzie"]
clip_list = []
for text in text_list:
try:
txt_clip = ( TextClip(text, fontsize = 70, color = 'white').set_duration(2))
clip_list.append(txt_clip)
except UnicodeEncodeError:
txt_clip = TextClip("Issue with text", fontsize = 70, color = 'white').set_duration(2)
clip_list.append(txt_clip)
print(clip_list)
final_clip = CompositeVideoClip([clips, clip_list])
final_clip.write_videofile("./video/export.mp4", fps = 24, codec = 'mpeg4')但是得到像size = clips.size AttributeError这样的错误:'list‘对象没有'size’属性,我需要在前15秒显示图像,15秒后文本应该显示10秒。
发布于 2020-05-09 20:21:22
嗨,谢谢你贴出这个问题。希望这能对你有所帮助。
您的主要错误与以下代码行有关:
final_clip = CompositeVideoClip([clips, clip_list])CompositeVideoClip.__init__需要一个Clip类型的列表(CompositeVideoClip继承Clip类)。但是,在前面的代码行中:
print(clips)
...
print(clip_list)因此,您已经有效地提供给CompositeVideoClip.__init__方法的是一个嵌套列表。因此,您应该执行以下操作:
final_clip = CompositeVideoClip(clips + clip_list)我相信你能想出一个更好的解决方案,这对你来说是一个可行的解决方案。如果我的建议不起作用,请继续写下去。
https://stackoverflow.com/questions/61565222
复制相似问题