Moviepy调整多个视频的大小

问题描述

我想用moviepy调整多个视频的大小。

这是我的代码

clips = glob.glob('./Clips/*.mp4')

clipslist = []

for clip in clips:
    clipslist.append(VideoFileClip(clip))
    
video = concatenate_videoclips(clipslist,method='chain')
video.write_videofile(f'./Done/{title}.mp4',fps=60)

我尝试过:

for clip in clips:
    clip.resize(width=1920,height=1080)
    clipslist.append(VideoFileClip(clip))

我收到此错误

AttributeError: 'str' object has no attribute 'resize'

compose方法解决此问题,但渲染速度很慢。使用compose进行渲染需要20分钟以上的时间。

解决方法

clips = glob.glob('./Clips/*.mp4')

glob.glob的定义:

返回与路径名匹配的可能为空的路径名列表,该路径名必须是包含路径说明的字符串。

for clip in clips:在这里clip将是一个字符串。 clip.resize(width=1920,height=1080),并且您正在尝试调整字符串的大小,因此出现错误。

尝试:

VideoFileClip(clip).resize(width=1920,height=1080)

编辑评论:

我正在获取clipslist.append(VideoFileClip(clip))。resize(width = 1920,height = 1080)AttributeError:'NoneType'对象没有属性'resize'

不要像这样排列代码,请仔细查看:

clipslist.append(VideoFileClip(clip)).resize(width=1920,height=1080)

您正在调整clipslist.append()的大小,而不是 VideoFileClip(clip)的大小。

尝试:

clipslist.append(VideoFileClip(clip).resize(width=1920,height=1080))