'module' 使用 Moviepy 时对象不可调用
'module' object is not callable when working with Moviepy
我正在使用 Moviepy 开发一个简单的视频编辑程序,但出于某种原因,我遇到了一堆奇怪的错误,而且在我看来是不一致的错误。
问题似乎是 "VideoFileClip" class,由于某种原因无法访问。该代码最近已 运行 成功,但我们不确定是否对程序进行了一些细微的更改,或者库中是否存在错误,导致程序失败。我们尝试了 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
如果实例化的任何 类 来自 moviepy
模块,您需要使用它们的完全限定名称(即 moviepy.VideoFileClip
)。
或者您需要使用 from moviepy import VideoFileClip
.
将特定的 类 导入到当前模块的命名空间中
你还没有真正导入你需要的东西。除了 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。
我正在使用 Moviepy 开发一个简单的视频编辑程序,但出于某种原因,我遇到了一堆奇怪的错误,而且在我看来是不一致的错误。
问题似乎是 "VideoFileClip" class,由于某种原因无法访问。该代码最近已 运行 成功,但我们不确定是否对程序进行了一些细微的更改,或者库中是否存在错误,导致程序失败。我们尝试了 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
如果实例化的任何 类 来自 moviepy
模块,您需要使用它们的完全限定名称(即 moviepy.VideoFileClip
)。
或者您需要使用 from moviepy import VideoFileClip
.
你还没有真正导入你需要的东西。除了 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。