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
是一个列表,那么您肯定应该使用likeclip1
,而不是'clip1'
。我确实尝试过,如下面的答案所示。如果您使用clipA.append(clip1)
和clipA.append(clip2)
…(没有clip1
和clip2
…)而不是clipA.extend('clip1')
和clipA.extend('clip2'),则没有帮助。但我会尝试不带字符串标记。但是感谢您的快速响应如果clip1
是一个列表,那么您肯定应该使用likeclip1
,而不是'clip1'
。我确实尝试过,如下面的答案所示。这没用