Простой скрипт Moviepy, ошибка: нехешируемый тип: 'list' - PullRequest
1 голос
/ 29 мая 2020

Я работаю над небольшим скриптом для объединения всех клипов в папке с небольшим переходом с помощью moviepy, но я не могу запустить его, так как получаю сообщение об ошибке unhashable type 'list'. Я читал много сообщений об этой ошибке, и я понимаю, что вы не можете иметь sh список, а приведение к кортежу может решить проблему, я пробовал несколько предложений из других ответов, но не могу полностью понять, почему мой код не полностью работает

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 голосов
/ 29 мая 2020

Я точно не знаю, что вызывает ошибку, но пример для воспроизведения ошибки:

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

Я просмотрел помет в документации pymov ie, но не смог найти параметры. Попробуйте проверить и увидеть параметры, необходимые для функции создания.

Здесь вы можете увидеть параметры функций: https://github.com/Zulko/moviepy/blob/master/moviepy/video/compositing/concatenate.py возможно, это поможет.

...