2017-10-16 46 views
1

我正在使用Moviepy进行一个简单的视频编辑程序,但出于某种原因,我收到了一堆奇怪的和我认为不一致的错误。'模块'对象在使用Moviepy时无法调用

问题似乎是“VideoFileClip”类,由于某些原因无法访问该类。代码最近运行成功,但我们不确定程序是否发生了轻微的变化,或者库中是否有错误,导致程序失败。我们尝试(使用Ubuntu两个独立的安装和使用Windows上的蟒蛇调试的企图和一个)Moviepy 3个单独的安装

# -*- 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

回答

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

+0

似乎解决了这个问题,谢谢。我不知道足够进口的语法 –

+0

@MagnusNyborgMadsen不客气!请接受答案,以便未来的观众知道它的工作原理! – tburrows13

0

如果任何类别bein g实例化来自moviepy模块,您需要使用它们的完全限定名称(即, moviepy.VideoFileClip)。

或者您需要将具体的类导入当前模块的命名空间from moviepy import VideoFileClip

+0

似乎解决了这个问题,谢谢。我不知道导入的语法不够好 –

相关问题