使用Moviepy时,'module'对象不可调用

时间:2017-10-16 00:58:18

标签: python class module moviepy

我正在使用Moviepy开发一个简单的视频编辑程序,但由于某种原因,我得到了一堆奇怪的东西,在我看来,错误不一致。

问题似乎是“VideoFileClip”类,由于某种原因无法访问。代码最近成功运行,但我们不确定是否对程序进行了一些细微的更改,或者库中某处是否存在错误,导致程序失败。我们尝试了3个单独的Moviepy安装(在Windows上使用Anaconda进行两次单独安装和尝试调试,使用Ubuntu进行调试)

    # -*- coding: utf-8 -*-

import numpy as np
import pandas as pd
import moviepy



def clip(t_start,t_stop):
    myVideoFile = "C.mp4"
    myVid = VideoFileClip(myVideoFile)
    myVid = myVid.subclip(t_start,t_stop)
    return myVid


tfile = "timeStampLog.csv"
timestamps = np.array(pd.read_csv(tfile, header=None, sep=';'),dtype=float)
print(timestamps)


for n in range(np.size(timestamps[:,0])):
    my_clip = clip(timestamps[n,0],timestamps[n,1])
    my_clip.write_videofile("movie{0}.mp4".format(n)) # default codec: 'libx264', 24 fps

返回的错误是:

Traceback (most recent call last):
File "test.py", line 27, in <module>
my_clip = clip(timestamps[n,0],timestamps[n,1])
File "test.py", line 16, in clip
myVid = moviepy.video.io.VideoFileClip(myVideoFile)
TypeError: 'module' object is not callable

2 个答案:

答案 0 :(得分:0)

如果要实例化的任何类来自moviepy模块,则需要使用其完全限定名称(即moviepy.VideoFileClip)。

或者您需要使用from moviepy import VideoFileClip将特定类导入当前模块的命名空间。

答案 1 :(得分:0)

您还没有真正导入所需的东西。而不仅仅是import moviepy,您需要做以下三件事之一:

from moviepy.editor import *  # Quick and dirty
import moviepy.editor as mp  # You don’t need to specify everything you are using, just use mp before each eg clip = mp.VideoFileClip(params)
from moviepy.editor import VideoFileClip  # Mosy efficient but you need to specify everything from moviepy that you are using

对于你的代码片段,我会使用最后一段代码。

如需进一步了解如何从moviepy导入内容,请阅读文档here