我正在使用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
答案 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。