首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用moviepy使用图像和文本生成视频,但出现错误,如size = clips[0].size AttributeError:'list‘对象没有'size’属性

使用moviepy使用图像和文本生成视频,但出现错误,如size = clips[0].size AttributeError:'list‘对象没有'size’属性
EN

Stack Overflow用户
提问于 2020-05-03 03:35:56
回答 1查看 69关注 0票数 0
代码语言:javascript
复制
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秒。

EN

回答 1

Stack Overflow用户

发布于 2020-05-09 20:21:22

嗨,谢谢你贴出这个问题。希望这能对你有所帮助。

您的主要错误与以下代码行有关:

代码语言:javascript
复制
final_clip = CompositeVideoClip([clips, clip_list])

CompositeVideoClip.__init__需要一个Clip类型的列表(CompositeVideoClip继承Clip类)。但是,在前面的代码行中:

代码语言:javascript
复制
print(clips)
...
print(clip_list)

因此,您已经有效地提供给CompositeVideoClip.__init__方法的是一个嵌套列表。因此,您应该执行以下操作:

代码语言:javascript
复制
final_clip = CompositeVideoClip(clips + clip_list)

我相信你能想出一个更好的解决方案,这对你来说是一个可行的解决方案。如果我的建议不起作用,请继续写下去。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61565222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档