2017-10-16 4 views
1

Ich arbeite an einem einfachen Video-Bearbeitungsprogramm mit MoviePy, aber aus irgendeinem Grund bekomme ich eine Reihe von seltsamen und, wie mir scheint, inkonsistenten Fehlern.'Modul' Objekt ist nicht aufrufbar bei der Arbeit mit MoviePie

Das Problem scheint die "VideoFileClip" -Klasse zu sein, auf die aus irgendeinem Grund nicht zugegriffen werden kann. Der Code wurde kürzlich erfolgreich ausgeführt, aber wir sind unsicher, ob eine geringfügige Änderung am Programm vorgenommen wurde oder ob irgendwo in der Bibliothek ein Fehler aufgetreten ist, der das Programm zum Absturz bringt. Wir haben versucht, 3 separate Installationen von Moviepy (zwei getrennte Installationen und Versuche von Debugging mit Anaconda auf Windows und einem 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

Fehler zurückgegeben hier:

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

Antwort

0

Sie haben nicht wirklich die Dinge importiert, die Sie brauchen. Anstatt nur import moviepy, müssen Sie eine von drei Dinge tun:

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 

Für Ihr Code-Snippet, würde ich das letzte verwenden.

Weitere Informationen darüber, wie Sie am besten Dinge aus movepy importieren, finden Sie in der Dokumentation here.

+0

schien das Problem zu lösen, danke. Ich kannte die Syntax für den Import nicht gut genug –

+0

@MagnusNyborgMadsen Gern geschehen! Bitte akzeptiere die Antwort, damit zukünftige Zuschauer wissen, dass es funktioniert hat! – tburrows13

0

Wenn einer der Klassen bein Instanziiert sind von der moviepy Modul müssen Sie ihre voll qualifizierten Namen (d. h. moviepy.VideoFileClip).

Oder Sie müssen die spezifischen Klassen in den Namespace Ihres aktuellen Moduls mit from moviepy import VideoFileClip importieren.

+0

Schien das Problem zu lösen, danke. Ich kannte die Syntax für den Import nicht gut genug –

Verwandte Themen