
用 PyQt5 打造《GIF转MP4》桌面小工具
作者:小庄-Python办公
背景
很多办公/社媒场景会收到 GIF 动图,但在演示或视频平台上更偏好 MP4。MP4 体积更小、兼容性更好、可快进/暂停。于是做了一个简单好用的桌面工具:拖拽/多选 GIF,一键转 MP4。
Github源码: 批量GIF动态图转MP4
Github源码: 批量GIF动态图转MP4
Github源码: 批量GIF动态图转MP4
技术选型
- 界面:PyQt5(稳定、社区成熟、Windows 体验好)
- 转码:ffmpeg(业界标准,参数灵活)
- 平台:Windows 为主;其他系统可用,路径与可执行名略有差异
设计要点
- 拖拽与多选:列表控件接收文件/文件夹 URL,递归识别
.gif,自动去重 - 路径输入:提供
ffmpeg路径输入框与文件浏览按钮,留空走系统PATH - 后台线程:
QThread顺序执行,界面不冻结;状态事件回传到文本输出区 - 友好参数:
-pix_fmt yuv420p提升播放器兼容性scale=trunc(iw/2)*2:trunc(ih/2)*2保证宽高为偶数,避免编码失败-movflags faststart优化网络首帧加载
关键流程
- 用户添加 GIF(拖拽/选择);列表仅保留有效
.gif - 获取 ffmpeg 路径(空→
ffmpeg;目录→拼接ffmpeg.exe;文件→直接使用) - 可用性检测:运行
ffmpeg -version判断是否可执行 - 启动线程,逐个执行转码命令,输出
同名.mp4 - 实时状态:开始、成功、失败/异常;完成后弹窗统计
使用步骤
- 安装依赖:
pip install PyQt5 - 安装 ffmpeg,并在“ffmpeg路径”中选择
ffmpeg.exe或将其加入PATH - 运行:
python gif_to_mp4_gui.py - 拖拽或选择 GIF,点击“转换”
异常与鲁棒性
- 重复文件忽略、非 GIF 忽略、路径不存在忽略
- ffmpeg 不可用时明确提示用户检查路径/环境
- 命令失败与异常分开统计,便于定位问题
可扩展方向
- 并行转换与队列优先级
- 进度条/剩余时间、取消任务
- 输出目录选择、文件重命名策略
- 可调视频参数:码率、帧率、分辨率、H.264/H.265 选择
- 跨平台适配(Linux/Mac 路径)与一键打包(PyInstaller)
结语
这个工具目标是“够用且简单”,满足日常办公场景的 GIF→MP4 转换。如果你有更多需求(比如参数面板、批量日志、导出报告等),欢迎继续交流与完善。
