如何利用MoviePy拼接列表中存储路径的多个视频文件?
问题修复方案
你的代码存在两个关键问题,导致无法完成视频拼接:
核心错误点
concatenate_videoclips参数错误:这个函数需要接收VideoFileClip对象的列表,而非字符串路径列表,你还额外把路径列表套了一层方括号,传入了嵌套列表,完全不符合函数要求。- 路径转义问题:Windows路径里的反斜杠
\在Python字符串中是转义字符,直接编写会导致路径解析出错,需改成原始字符串(加r前缀)或使用双反斜杠\\。
修正后的完整代码
from moviepy.editor import VideoFileClip, concatenate_videoclips list_of_clips = [] no_vid = int(input('输入要拼接的视频数量: ')) for i in range(no_vid): vid_path = input('输入视频文件路径: ') # 将每个路径转为MoviePy的VideoFileClip对象 clip = VideoFileClip(vid_path) list_of_clips.append(clip) # 直接传入VideoFileClip对象的列表 final_clip = concatenate_videoclips(list_of_clips) # 使用原始字符串处理输出路径,避免转义错误 final_clip.write_videofile(r"E:\python_work\downloaded\my_concatenation.mp4") # 手动关闭所有视频剪辑,释放系统资源 for clip in list_of_clips: clip.close()
额外提示
- 如果视频的编码、分辨率、帧率不一致,拼接时可能报错,建议提前统一视频参数,或在创建
VideoFileClip时指定格式参数。 - 处理大视频时,若出现内存不足问题,可给
concatenate_videoclips添加method="compose"参数,它会直接在文件层面拼接,大幅降低内存占用。
内容的提问来源于stack exchange,提问作者ali abid
相关产品推荐
相关产品推荐

