【办公类-117-01】20250924通义万相视频2.5——三个小人(幼儿作品动态化)
背景需求
和家长沟通时,提到孩子的绘画能力超前(涂鸦转向几何图形)
把其中一张作业变成动态化
、
第一张生成失败,
不过第二天它也显示了,
三个人,动起来,在跳舞,微笑,大笑
同样台词做了一张
变成了真人跳舞
又换了台词,做了几份
画纸上有三个简笔画人,请让他们动起来,在跳舞,微笑,大笑。
真的跳舞了
下载三个MP4
用代码将mp4转(5MB以内)GIF,才能把视频内容放在CSDN上
'''
结题报告WORD 插入 MP4转gif动画(降低帧率)
deepseek、阿夏
20250718
'''
import os
from moviepy.editor import VideoFileClipdef convert_mp4_to_gif(input_folder, output_folder=None, scale=0.5, fps=5, colors=128):"""修复版的MP4转GIF函数"""if output_folder is None:output_folder = input_folderos.makedirs(output_folder, exist_ok=True)for filename in os.listdir(input_folder):if filename.lower().endswith('.mp4'):input_path = os.path.join(input_folder, filename)output_path = os.path.join(output_folder, f"{os.path.splitext(filename)[0]}.gif")print(f"正在转换: {filename}...")try:# 使用更稳定的方式读取视频clip = VideoFileClip(input_path)# 检查视频是否成功读取if clip.duration == 0:print(f"警告: {filename} 可能为空或损坏")continue# 调整尺寸(更保守的参数)if scale is not None:clip = clip.resize(scale)# 限制GIF时长,避免文件过大if clip.duration > 10: # 如果视频超过10秒,只取前10秒clip = clip.subclip(0, 10)# 使用更稳定的GIF输出参数clip.write_gif(output_path,fps=min(fps, 8), # 限制最大帧率program='ffmpeg',verbose=False,logger=None)# 检查输出文件if os.path.exists(output_path) and os.path.getsize(output_path) > 0:print(f"✓ 转换成功: {os.path.basename(output_path)}")else:print(f"✗ 转换失败: 输出文件为空")except Exception as e:print(f"✗ 转换 {filename} 时出错: {str(e)}")finally:if 'clip' in locals():clip.close()# 测试版本 - 更保守的参数
if __name__ == "__main__":path = r'D:\test\20桌面素材\20250928乐乐画作\1'# 首先检查文件夹是否存在if not os.path.exists(path):print(f"错误: 路径不存在 - {path}")else:print(f"找到文件夹,包含文件: {os.listdir(path)}")convert_mp4_to_gif(input_folder=path,scale=0.3, # 更小的缩放比例fps=5, # 更低的帧率colors=64 # 更少的颜色)