2017-10-16 49 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

似乎解決了這個問題,謝謝。我不知道導入的語法不夠好 –

相關問題