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

使用MoviePy调整视频尺寸报错:'module' object is not callable

MoviePy调整视频尺寸报错:'module' object is not callable 解决办法

问题描述

我正在使用MoviePy开发一款自动视频编辑器,实现上下叠加两个视频的功能,但在调整视频尺寸时遇到问题。导入resize模块后无法调用该命令,运行代码时持续报错,尝试使用combined.resize()也未解决,附上代码及错误信息,求排查操作失误。

运行代码

import os
import random
from moviepy.editor import VideoFileClip, CompositeVideoClip, concatenate_videoclips , clips_array, vfx, AudioFileClip, ImageClip 
from moviepy.video.fx import resize


originalFolder = "c:\Users\me\Desktop\Content Software\testfold"
list = os.listdir(originalFolder)

minecraftFolder = "c:\Users\me\Desktop\Content Software\minecraft"

minecraftList = os.listdir(minecraftFolder)

def videoGen(minecraftList, list):
    clipIndex = int(random.random()*len(list))
    filePath1 = os.path.join(originalFolder, list[clipIndex])

    overlayClip = VideoFileClip(filePath1)
    minecraftIndex = int(random.random()*len(minecraftList))
    filePath2 = os.path.join(originalFolder, list[minecraftIndex])

    minecraftClip = VideoFileClip(filePath2)

    clips = ([overlayClip], [minecraftClip])

    combined = clips_array(clips)

    combinedFinal = resize(combined, width=1080, height=1920)

    combinedFinal.write_videofile("test.mp4")
    

videoGen(minecraftList, list)

报错信息

Traceback (most recent call last):
  File "c:\Users\me\Desktop\Content Software\Minecraft Video Gen.py", line 33, in <module>
    videoGen(minecraftList, list)
  File "c:\Users\me\Desktop\Content Software\Minecraft Video Gen.py", line 28, in videoGen
    combinedFinal = resize(combined, width=1080, height=1920)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'module' object is not callable

问题排查与解决

1. 核心错误原因

你当前导入的resize是模块对象,并非可直接调用的函数,直接调用模块就会触发TypeError: 'module' object is not callable错误。

2. 两种解决方式

  • 方式一:修正导入语句,直接导入resize函数
    将导入代码从:

    from moviepy.video.fx import resize
    

    修改为:

    from moviepy.video.fx.resize import resize
    

    此时导入的是resize函数,原代码中resize(combined, width=1080, height=1920)即可正常执行。

  • 方式二:使用剪辑对象自带的resize方法
    无需单独导入resize模块,直接调用combined剪辑对象的resize方法:

    combinedFinal = combined.resize(width=1080, height=1920)
    

    注意:如果之前尝试此方法失败,大概率是因为导入的resize模块和方法名冲突,需删除from moviepy.video.fx import resize这句代码后重试。

3. 额外代码错误修正

代码中存在路径错误:filePath2 = os.path.join(originalFolder, list[minecraftIndex])里的文件夹和列表不匹配,应该从minecraftFolder中读取minecraftList的元素,修正后:

filePath2 = os.path.join(minecraftFolder, minecraftList[minecraftIndex])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:25:31