Почему функция сцепления moviepy не работает со списком? - PullRequest
1 голос
/ 21 марта 2019

Я создал код, который объединяет видео, и если их там нет, они не будут объединены, но в чем проблема? Для контекста я пытаюсь сделать сценарий, который компилирует видео через поиск в Google

from __future__ import unicode_literals
import os
from moviepy.editor import *
from pathlib import Path


def videoedit():
  datafolder = Path("G:\\Projekt\\Projekt\\Clips")
  file_to_open1 = datafolder / "Clip1.mp4"
  file_to_open2 = datafolder / "Clip2.mp4"
  file_to_open3 = datafolder / "Clip3.mp4"
  file_to_open4 = datafolder / "Clip4.mp4"
  file_to_open5 = datafolder / "Clip5.mp4"
  clipA = []
  try:
   clip1 = VideoFileClip(str(file_to_open1))
   clipA = clipA.extend('clip1')
  except:
   print("Clip1 wurde nicht gefunden")
  try:
   clip2 = VideoFileClip(str(file_to_open2))
   clipA = clipA.extend('clip2')
  except:
   print("Clip2 wurde nicht gefunden")
  try:
   clip3 = VideoFileClip(str(file_to_open3))
   clipA = clipA.extend('clip3')
  except:
   print("Clip3 wurde nicht gefunden")
  try: 
   clip4 = VideoFileClip(str(file_to_open4))
   clipA = clipA.extend('clip4')
  except:
   print("Clip4 wurde nicht gefunden")
  try: 
   clip5 = VideoFileClip(str(file_to_open5))
   clipA = clipA.extend('clip5')
  except:
   print("Clip5 wurde nicht gefunden")
  clipA
  final_clip = concatenate_videoclips(clipA)
  final_clip.write_videofile("Compilation.mp4",fps=30)
videoedit()

Theres сообщение об ошибке (ОС Windows):

Clip2 wurde nicht gefunden (eng: Clip2 not found)
Clip3 wurde nicht gefunden
Clip4 wurde nicht gefunden
Clip5 wurde nicht gefunden
Traceback (most recent call last):
  File "youtube_s.py", line 48, in <module>
    videoedit()
  File "youtube_s.py", line 46, in videoedit
    final_clip = concatenate_videoclips(clipA)
  File "C:\python\lib\site-packages\moviepy\video\compositing\concatenate.py", line 71, in concatenate_videoclips
    tt = np.cumsum([0] + [c.duration for c in clips])
TypeError: 'NoneType' object is not iterable

Но есть clip2, clip3, clip4, clip5, и функция не работает со списком, но почему

1 Ответ

0 голосов
/ 23 марта 2019

ОБНОВЛЕНИЕ: только с «удалено» появляется сообщение об ошибке:


Clip1 wurde nicht gefunden(made up by myself, means :Clip# not found)
Clip2 wurde nicht gefunden
Clip3 wurde nicht gefunden
Clip4 wurde nicht gefunden
Clip5 wurde nicht gefunden
Traceback (most recent call last):
  File "youtube_s.py", line 48, in <module>
    videoedit()
  File "youtube_s.py", line 46, in videoedit
    final_clip = concatenate_videoclips(clipA)
  File "C:\python\lib\site-packages\moviepy\video\compositing\concatenate.py", line 75, in concatenate_videoclips
    w = max([r[0] for r in sizes])
ValueError: max() arg is an empty sequence

с расширением и «удалено или не удалено:


Clip2 wurde nicht gefunden
Clip3 wurde nicht gefunden
Clip4 wurde nicht gefunden
Clip5 wurde nicht gefunden
Traceback (most recent call last):
  File "youtube_s.py", line 48, in <module>
    videoedit()
  File "youtube_s.py", line 46, in videoedit
    final_clip = concatenate_videoclips(clipA)
  File "C:\python\lib\site-packages\moviepy\video\compositing\concatenate.py", line 71, in concatenate_videoclips
    tt = np.cumsum([0] + [c.duration for c in clips])
TypeError: 'NoneType' object is not iterable

что может быть подсказкой, чтоClip1 найден и не имеет ошибки.

Но, честно говоря, я не знаю, что делать сейчас.


ОТВЕТ

Вы должныиспользуйте clip.append (Clip1) вместо clip = clip.append (Clip1).Это будет работать

...