You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Moviepy报错:'NoneType' object has no attribute 'set_duration' 求助

问题解决:AttributeError: 'NoneType' object has no attribute 'set_duration'

错误根源

  1. TextClip创建失败:直接写font='Arial.ttf'会导致MoviePy找不到字体文件,返回None,后续调用set_duration自然触发报错。
  2. numpy数组未转成剪辑对象:你生成的白色背景是原始numpy数组,无法直接传入CompositeVideoClip,必须转为ImageClip类型。

修正后的代码

from moviepy.editor import *
import numpy as np

# 创建白色背景并转为ImageClip,设置时长5秒
# 注意尺寸顺序为(高度, 宽度, 通道),若要标准1080P建议用(1080, 1920)
white_bg = np.ones((1080, 1920, 3)) * 255
bg_clip = ImageClip(white_bg).set_duration(5)

# 创建文字剪辑:用系统字体名或完整字体路径
text = "My Super Awesome Text"
# 方式1:使用系统已安装的字体名(如Windows/macOS的"Arial")
text_clip = TextClip(text, font='Arial', fontsize=24, color='black')
# 方式2:找不到字体时指定绝对路径,示例为macOS系统Arial路径
# text_clip = TextClip(text, font='/System/Library/Fonts/Arial.ttf', fontsize=24, color='black')

# 设置文字位置和时长
text_clip = text_clip.set_pos('center').set_duration(5)

# 合成背景与文字
final_clip = CompositeVideoClip([bg_clip, text_clip])

# 导出视频,帧率设为24保证流畅度
final_clip.write_videofile("/Users/name/Desktop/animation.mp4", fps=24)

关键修改说明

  • 背景处理:将numpy数组通过ImageClip()转为剪辑对象,并统一设置5秒时长,确保和文字剪辑同步。
  • 字体修复:用系统字体名(如Arial)替代文件名,或提供字体文件的绝对路径,确保TextClip能正常实例化。
  • 帧率优化:把fps=1改为fps=24,避免导出的视频出现卡顿,符合常规视频播放标准。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:05:21