如何使用Python的MoviePy批量选取文件夹中的所有图片?
用MoviePy批量读取文件夹图片生成MP4视频
以下是优化后的代码,实现批量读取指定文件夹内的所有图片并生成视频,替代手动逐个添加的繁琐操作:
from moviepy.editor import ImageClip, concatenate_videoclips import os # 配置参数 IMAGE_FOLDER = "imagesfolder" PER_IMAGE_DURATION = 4 # 每张图片的显示时长(秒) OUTPUT_FILE = "memes.mp4" video_clips = [] # 筛选文件夹内的图片文件(支持常见格式) allowed_extensions = ('.jpg', '.jpeg', '.png', '.bmp') image_files = [ filename for filename in os.listdir(IMAGE_FOLDER) if filename.lower().endswith(allowed_extensions) ] # 对图片文件名排序,保证视频画面顺序正确 image_files.sort() # 批量创建图片剪辑 for img_name in image_files: img_path = os.path.join(IMAGE_FOLDER, img_name) clip = ImageClip(img_path).set_duration(PER_IMAGE_DURATION) video_clips.append(clip) # 拼接并导出视频 if video_clips: final_video = concatenate_videoclips(video_clips, method='compose') final_video.write_videofile( OUTPUT_FILE, fps=24, remove_temp=True, codec="libx264", audio_codec="aac" ) else: print("指定文件夹中未找到符合要求的图片文件")
关键优化点说明
- 批量筛选图片:通过后缀名过滤出文件夹内的图片,支持多种常见格式,无需手动指定每个文件名。
- 文件名排序:对图片文件名进行排序,确保视频中的画面按预期顺序播放(比如避免
image10.jpg排在image2.jpg前面)。 - 跨平台路径处理:使用
os.path.join拼接文件路径,避免Windows和Linux系统的路径分隔符差异问题。 - 容错机制:判断是否存在有效图片,避免无图片时执行拼接操作导致报错。
内容的提问来源于stack exchange,提问作者Emossauce
相关产品推荐
相关产品推荐

