为什么moviepy串联功能不能与列表一起使用?

时间:2019-03-21 19:07:24

标签: python-3.x moviepy

我编写了一个将视频合并的代码,如果不在视频中,就不会合并,但是问题出在哪里呢?对于上下文,我试图制作一个可通过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()

出现错误消息(操作系统窗口):

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 :(得分:0)

更新: 仅删除了',就会出现错误消息:


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)。那会起作用的