使用moviepy的write_gif导出GIF时分辨率被改变,如何保持原尺寸?
解决MoviePy导出GIF分辨率与原视频不一致的问题
MoviePy的write_gif方法默认会对视频进行缩放处理,导致导出的GIF分辨率和原MP4不一致。要保持原视频尺寸,只需在导出时指定原视频的分辨率参数即可,具体操作如下:
- 先通过视频剪辑对象的
size属性获取原视频的宽高(格式为(宽度, 高度)) - 调用
write_gif时,添加size参数传入原视频分辨率 - 建议同步指定原视频帧率,避免帧率转换引发的额外处理
修改后的代码示例:
from moviepy.editor import VideoFileClip import os os.chdir(r'G:\\') clip = VideoFileClip("VID.mp4").subclip(6*60, 6.1*60) # 获取原视频分辨率 original_size = clip.size # 导出GIF时指定尺寸和原视频帧率 clip.write_gif("vidgif.gif", program='ffmpeg', size=original_size, fps=clip.fps)
关键参数说明
size=original_size:强制GIF使用原视频的宽高尺寸,彻底避免自动缩放fps=clip.fps:保持原视频的帧率,确保GIF动画速度和原视频一致,同时减少不必要的尺寸调整
如果使用program='imageio'作为导出工具,同样可以通过size参数指定原视频分辨率解决问题。
内容的提问来源于stack exchange,提问作者Mohammed Hussain
相关产品推荐
相关产品推荐

