Python 3.x 为什么moviepy连接函数不能与列表一起工作?

Python 3.x 为什么moviepy连接函数不能与列表一起工作?,python-3.x,moviepy,Python 3.x,Moviepy,我做了一个组合视频的代码,如果它们不在那里,它们就不会被组合,但问题出在哪里?对于上下文,我试图制作一个脚本,通过谷歌搜索编译视频 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_

我做了一个组合视频的代码,如果它们不在那里,它们就不会被组合,但问题出在哪里?对于上下文,我试图制作一个脚本,通过谷歌搜索编译视频

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(英文:Clip2未找到)
Clip3 wurde nicht gefunden
Clip4 wurde nicht gefunden
Clip5 wurde nicht gefunden
回溯(最近一次呼叫最后一次):
文件“youtube_.py”,第48行,在
视频编辑()
视频编辑中的文件“youtube_.py”,第46行
最终剪辑=连接视频剪辑(clipA)
文件“C:\python\lib\site packages\moviepy\video\compositing\concatenate.py”,第71行,在concatenate\u videoclips中
tt=np.cumsum([0]+[c.剪辑中c的持续时间])
TypeError:“非类型”对象不可编辑
但是有一个clip2、clip3、clip4、clip5,该函数不能与列表一起工作,但为什么更新: 仅删除“删除”后,出现错误消息:


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

Clip1 wurde nicht gefunden(由我自己编造,意思是:剪辑#未找到)
Clip2 wurde nicht gefunden
Clip3 wurde nicht gefunden
Clip4 wurde nicht gefunden
Clip5 wurde nicht gefunden
回溯(最近一次呼叫最后一次):
文件“youtube_.py”,第48行,在
视频编辑()
视频编辑中的文件“youtube_.py”,第46行
最终剪辑=连接视频剪辑(clipA)
文件“C:\python\lib\site packages\moviepy\video\compositing\concatenate.py”,第75行,在concatenate\u videoclips中
w=最大值([r[0]表示尺寸为r])
ValueError:max()arg是一个空序列
使用“扩展”和“已删除”或“未删除”:


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

Clip2 wurde nicht gefunden
Clip3 wurde nicht gefunden
Clip4 wurde nicht gefunden
Clip5 wurde nicht gefunden
回溯(最近一次呼叫最后一次):
文件“youtube_.py”,第48行,在
视频编辑()
视频编辑中的文件“youtube_.py”,第46行
最终剪辑=连接视频剪辑(clipA)
文件“C:\python\lib\site packages\moviepy\video\compositing\concatenate.py”,第71行,在concatenate\u videoclips中
tt=np.cumsum([0]+[c.剪辑中c的持续时间])
TypeError:“非类型”对象不可编辑
可能的线索是找到了Clip1并且没有错误

但老实说,我不知道现在该怎么办


回答

您必须使用clip.append(Clip1),而不是clip=clip.append(Clip1)。这将起作用

更新: 仅删除“删除”后,出现错误消息:


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

Clip1 wurde nicht gefunden(由我自己编造,意思是:剪辑#未找到)
Clip2 wurde nicht gefunden
Clip3 wurde nicht gefunden
Clip4 wurde nicht gefunden
Clip5 wurde nicht gefunden
回溯(最近一次呼叫最后一次):
文件“youtube_.py”,第48行,在
视频编辑()
视频编辑中的文件“youtube_.py”,第46行
最终剪辑=连接视频剪辑(clipA)
文件“C:\python\lib\site packages\moviepy\video\compositing\concatenate.py”,第75行,在concatenate\u videoclips中
w=最大值([r[0]表示尺寸为r])
ValueError:max()arg是一个空序列
使用“扩展”和“已删除”或“未删除”:


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

Clip2 wurde nicht gefunden
Clip3 wurde nicht gefunden
Clip4 wurde nicht gefunden
Clip5 wurde nicht gefunden
回溯(最近一次呼叫最后一次):
文件“youtube_.py”,第48行,在
视频编辑()
视频编辑中的文件“youtube_.py”,第46行
最终剪辑=连接视频剪辑(clipA)
文件“C:\python\lib\site packages\moviepy\video\compositing\concatenate.py”,第71行,在concatenate\u videoclips中
tt=np.cumsum([0]+[c.剪辑中c的持续时间])
TypeError:“非类型”对象不可编辑
可能的线索是找到了Clip1并且没有错误

但老实说,我不知道现在该怎么办


回答


您必须使用clip.append(Clip1),而不是clip=clip.append(Clip1)。如果您使用
clipA.append(clip1)
clipA.append(clip2)
…(没有
clip1
clip2
…)而不是
clipA.extend('clip1')
clipA.extend('clip2'),这会有帮助吗。但我会尝试不带字符串标记。但是感谢您的快速响应如果
clip1
是一个列表,那么您肯定应该使用like
clip1
,而不是
'clip1'
。我确实尝试过,如下面的答案所示。如果您使用
clipA.append(clip1)
clipA.append(clip2)
…(没有
clip1
clip2
…)而不是
clipA.extend('clip1')
clipA.extend('clip2'),则没有帮助。但我会尝试不带字符串标记。但是感谢您的快速响应如果
clip1
是一个列表,那么您肯定应该使用like
clip1
,而不是
'clip1'
。我确实尝试过,如下面的答案所示。这没用