简单的moviepy脚本,出现错误:无法散列的类型:'列表'

时间:2020-05-29 06:00:52

标签: python moviepy

我正在使用一个小脚本来使用Moviepy将文件夹中的所有剪辑转换为小过渡,但是由于出现错误无法散列的类型“列表”,因此无法运行它。我已经阅读了许多有关此错误的文章,并且我了解到您无法对列表进行哈希处理,并且强制转换为元组可以解决该问题,我尝试了其他答案的多个建议,但无法完全理解原因我的代码无法正常工作

from moviepy.editor import concatenate_videoclips
from moviepy.video.io.VideoFileClip import VideoFileClip  
import os


clips = []
    for filename in os.listdir('D:/Clip Project/ClipsTest'):
        if filename.endswith(".mp4"):
            clips.append(VideoFileClip('D:/Clip Project/ClipsTest/' + filename))
    clips = [clip.crossfadein(1) for clip in clips]
    video = concatenate_videoclips(clips, padding=-1, method='compose', )
    video.write_videofile('D:/Clip Project/ClipsTest/League-' + '.mp4', threads=4, fps=24)

这是我最初遇到问题并努力解决的代码,任何提示都将是惊人的!

这是完整的错误:

Traceback (most recent call last):
  File "teststuff.py", line 2, in <module>
    from moviepy.editor import concatenate_videoclips
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\moviepy\editor.py", line 48, in <module>
    import moviepy.video.fx.all as vfx
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\moviepy\video\fx\all\__init__.py", line 13, in <module>
    __all__ = [name for _, name, _ in pkgutil.iter_modules(
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\moviepy\video\fx\all\__init__.py", line 13, in <listcomp>
    __all__ = [name for _, name, _ in pkgutil.iter_modules(
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\pkgutil.py", line 129, in iter_modules
    for i in importers:
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\pkgutil.py", line 415, in get_importer
    importer = sys.path_importer_cache[path_item]
TypeError: unhashable type: 'list'

这可能与moviepy本身有关吗?我查看了下面的文档,但无济于事,并且摆弄了导入文件。

1 个答案:

答案 0 :(得分:0)

我不知道是什么原因导致了错误,但有一个复制错误的示例:

d ={ 1:'first', [2,3]:'second'}
print(d)

我在pymovie文档中查看了垃圾,但找不到参数。尝试检查并查看组合功能所需的参数。

您可以在此处看到函数参数: https://github.com/Zulko/moviepy/blob/master/moviepy/video/compositing/concatenate.py 也许这会有所帮助。