
背景需求:
昨天做绘本图片,一些前天的积分,没有用完,就浪费了。
今天一共有2天100分,准备做视频(10分一次)快速消耗掉

关键词:猫头鹰低头。翻书,眨眼睛,动耳朵

好像没有20分钟,3分钟左右就好了。
其中有些图不能生成(保安、警察等)


一个视频没有完成,另外一个不能生成
只能下载有水印的

视频全部下载

用MP4转gif动画(因为5秒,而且原视频都是小于5MB),就用高清原图
python
'''
结题报告WORD 插入 MP4转gif动画(高清原图)
deepseek、阿夏
20250718
'''
import os
from moviepy.editor import VideoFileClip
def convert_mp4_to_gif(input_folder, output_folder=None, scale=None, fps=10):
"""
将指定文件夹中的所有MP4文件转换为GIF动画
参数:
input_folder: 包含MP4文件的输入文件夹路径
output_folder: 输出GIF的文件夹路径(默认与输入文件夹相同)
scale: 缩放比例(例如0.5表示缩小一半)
fps: 输出GIF的帧率
"""
if output_folder is None:
output_folder = input_folder
os.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 scale is not None:
clip = clip.resize(scale)
# 确保转换完整视频,不截断
clip.write_gif(output_path, fps=fps, program='ffmpeg')
print(f"转换完成: {output_path}")
except Exception as e:
print(f"转换 {filename} 时出错: {str(e)}")
finally:
if 'clip' in locals():
clip.close()
if __name__ == "__main__":
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250725AI视频\MP4'
input_folder = path
convert_mp4_to_gif(input_folder, scale=0.5, fps=10)
没想到生成出来的gif都是6MB
换一个代码,先测试fps=10

fps=10就是原图质量100%的质量


fps=9
小一点点了


fps=8

fps=7

非常适合

相关代码
python
'''
结题报告WORD 插入 MP4转gif动画(降低帧率)
deepseek、阿夏
20250718
'''
import os
from moviepy.editor import VideoFileClip
def convert_mp4_to_gif(input_folder, output_folder=None, scale=None, fps=10, colors=256):
"""
将指定文件夹中的所有MP4文件转换为GIF动画(优化大小版本)
参数:
input_folder: 包含MP4文件的输入文件夹路径
output_folder: 输出GIF的文件夹路径(默认与输入文件夹相同)
scale: 缩放比例(例如0.5表示缩小一半)
fps: 输出GIF的帧率(降低帧率可减小文件大小)
colors: 颜色数量(减少颜色数量可显著减小文件大小)
"""
if output_folder is None:
output_folder = input_folder
os.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 scale is not None:
clip = clip.resize(scale)
# 添加优化参数
clip.write_gif(
output_path,
fps=fps,
program='ffmpeg',
colors=colors, # 减少颜色数量
opt='optimizeplus' # 优化选项
)
print(f"转换完成: {output_path}")
except Exception as e:
print(f"转换 {filename} 时出错: {str(e)}")
finally:
if 'clip' in locals():
clip.close()
if __name__ == "__main__":
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250725AI视频\MP4'
input_folder = path
convert_mp4_to_gif(
input_folder,
scale=0.5,
fps=7, # 进一步降低帧率
colors=128 # 减少颜色数量
)
一、猫头鹰
01猫头鹰低头。翻书,眨眼睛,动耳朵

猫头鹰用嘴翻书了,真正的猫头鹰没有拟人化的手,所以要提示用手翻书
03猫头鹰。一只手书,一只手翻书页,眨眼睛,动耳朵

效果不错,符合要求
二、兔子
02兔子在舞蹈上跳舞

效果不错,符合要求
三、小狗
04小狗是消防员,着灭火器向火焰喷射,

火焰动了,但小狗要旋转身体,原图需要重新画,左狗右火
四、大象
05大象踱步,鼻子卷起地上的砖块向上举高

只踱步,没有"卷起任何物品"
07大象踱步,鼻子卷起地上的砖块,卷到楼房上

鼻子卷起砖头,但踱步动作太大,破坏嫌疑,鼻子也没有抬高。
10大象低头,用鼻子卷起地上的一根木头,抬头,用鼻子将木头卷到楼房顶上

效果不错,符合要求
06小松鼠外卖员,骑这助动车送货,行便在马路上

"行驶"背景移动效果有了,但是松鼠快递员没有动作、表情。
08小松鼠外卖员,骑在助动车送货,行使在马路上,眨眼睛,摇耳朵,微笑,双手移动车扶手,转弯

松鼠的动作有了,但是背景不动了
09小松鼠外卖员,骑在助动车送贷,眨眼睛,摇耳朵,微笑,双手移动车扶手,转弯,助动车行驶在马路上(背長移动)
