如何在python中为现有导入添加新方法?特别是电影

时间:2019-05-29 20:52:00

标签: python-3.x moviepy

无论出于何种原因,Python都不允许我访问在moviepy的preview.py文件中创建的自定义方法。我只想知道如何正确地将其实现到文件中。作为参考,在更改方法名称之前,它可以正常工作。

我检查了至少两个__init.py__文件,它们实际上是空的。我找不到方法是否在任何地方初始化,而且可能是我所缺少的。

我还尝试重新启动Git Bash,但也没有用(我看到的另一个解决方案)。

原文:

@convert_masks_to_RGB
def preview(clip, fps=15, audio=True, audio_fps=22050, audio_buffersize=3000,
            audio_nbytes=2, fullscreen=False):

已更改:

@requires_duration
@convert_masks_to_RGB
def preview_custom(clip, marker_overlay="marker_overlay.png", fps=15, audio=True, audio_fps=22050, audio_buffersize=3000,
            audio_nbytes=2, fullscreen=False):

更改后的方法与原始方法之间存在许多差异,但是目前,我期望的唯一结果是正确调用该方法。错误如下:

Traceback (most recent call last):
  File "T3AJM.py", line 249, in <module>
    main()
  File "T3AJM.py", line 34, in main
    GUI_main_menu()
  File "T3AJM.py", line 85, in GUI_main_menu
    GUI_play_markers()
  File "T3AJM.py", line 125, in GUI_play_markers
    video.preview_custom(marker_overlay=TEMP_OVERLAY_FILE)
AttributeError: 'VideoFileClip' object has no attribute 'preview_custom'

谢谢您的时间。

1 个答案:

答案 0 :(得分:0)

我什至不确定这是否可以从技术上解决问题,只是这样做:

from moviepy.video.io.preview import *

preview_custom(video, marker_overlay=TEMP_OVERLAY_FILE)

解决了该问题。我不知道为什么要像调用clip.preview()那样改变它的调用方式,或者在这种情况下video.preview()以前可以很好地工作,但是无论如何。