☞ ░ 前往老猿Python博文目录 ░

一、引言

老猿之所以学习和研究Moviepy的使用,是因为需要一个将视频转成动画的工具,当时在网上到处搜索查找免费使用工具,结果找了很多自称免费的工具,但转完GIF后都会在动画中打上对应工具的显著广告或Logo,根本没法将转换后的动画发布。如是想到了万能的Python,就找到了moviepy,没费多少时间就搞定了,因此萌发了学习和研究Moviepy的兴趣。本文利用前面介绍的知识来开发一个windows下图形化的视频转GIF或图片的工具。

二、背景知识介绍

1、视频转gif或图片会用到《moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解》、《moviepy音视频剪辑:视频剪辑基类VideoClip详解》介绍的write_images_sequence和write_gif方法,具体内容在此就不赘述了;
2、图形化工具开发会用到专栏《使用PyQt开发图形界面Python应用》或《PyQt入门知识》的知识;
3、打包生成exe会用到《PyQt(Python+Qt)学习随笔:windows下使用pyinstaller将PyQt文件打包成exe可执行文件》介绍的方法进行打包;
4、程序的框架与《PyQt+moviepy音视频剪辑实战1:多视频合成顺序播放或同屏播放的视频文件》、《PyQt+moviepy音视频剪辑实战2:实现一个剪裁视频文件精华内容留存工具》或《PyQt+moviepy音视频剪辑实战1:多个音视频合成顺序播放或同屏播放的视频文件实现详解》、《PyQt+moviepy音视频剪辑实战2:一个剪裁视频文件精华内容留存工具的实现》相同。

三、图形界面设计

本程序的界面框架除了主界面之外的部分都是复用《PyQt+moviepy音视频剪辑实战1:多个音视频合成顺序播放或同屏播放的视频文件实现详解》、《PyQt+moviepy音视频剪辑实战1:多视频合成顺序播放或同屏播放的视频文件》的公用框架。

主界面如下:

四、代码实现

4.1、主界面类及构造方法

class mainWin(QtWidgets.QMainWindow,ui_mainWin.Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)self.initValues()self.initSignalAndSlots()self.initPublicFrame()

4.2、槽和信号连接方法initSignalAndSlots

      def initSignalAndSlots(self):self.btn_choiceSrc.clicked.connect(self.chooseFile)self.videoFile.textChanged['QString'].connect(self.fileNameInputed)self.btn_choiceDest.clicked.connect(self.chooseFile)self.action2Gif.triggered.connect(self.convert)self.action2Img.triggered.connect(self.convert)

4.3、视频转换方法

    def convertByMoviepy(self,srcFile,destFile,toGif):destFileName,destFileType = destFile.rsplit('.',1)if toGif:destFileType = '.gif'else:destFileType = '.jpg'destFile = destFileName+destFileTypeprint("convertUseMoviepy start:",srcFile,'-->',destFile)try:start = int(self.startPos.text().strip(' \r\n\t'))end = int(self.endPos.text().strip(' \r\n\t'))vfps = int(self.fps.text())except Exception as e:print("输入了非法的数字字符,不能转换:",e)returntry:if  end:if start>end:print("指定视频开始位置大于结束位置,不能转换")returncache = mpe.VideoFileClip(srcFile).subclip(start, end)else:cache = mpe.VideoFileClip(srcFile)except Exception as e:info = f"视频文件无法读取,可能是因为格式不支持:{e}"print(info)print("任务无法执行!")returnif vfps<1 or vfps>30:vfps = 2if not toGif:imgCount = len(str(vfps*(end-start+1)))+1format = f"_%0{imgCount}d"destFileFormat = destFileName +format+ destFileTypefileFormat =  '_'+'X'*imgCountdestFileFormatName = destFileName +fileFormat+ destFileTypetry:if toGif:cache.write_gif(destFile,fps=vfps)else:cache.write_images_sequence(destFileFormat,vfps)except Exception as e:if toGif:print(f"视频{srcFile}转换gif失败:", e)else:print(f"视频{srcFile}转换图片失败:", e)else:if toGif:print(f"视频{srcFile}转换gif成功,结果保存在{destFile}中")else:print(f"视频{srcFile}转换图片成功,结果保存在{destFileFormatName}中")cache.close()

五、运行界面

5.1、初始主界面

5.2、进行视频转换的运行过程界面

这是从F:\video\zbl1.mp4视频转成一系列图片输出,每秒取一帧图片保存,每个图片的名字是输出文件名加序号再加后缀的形式,如zbl1_09.jpg,第一张序号为0,即zbl1_00.jpg,序号的长度根据生成图片的视频需要生成的文件数来决定,超过100个就是3位、超过1000个就是4位…。

六、打包成windows执行文件

使用《PyQt(Python+Qt)学习随笔:windows下使用pyinstaller将PyQt文件打包成exe可执行文件》介绍的方法进行打包。

老猿的工程包含了两个公共框架目录,因此打包使用如下命令:

pyinstaller video2Gif.py  -w  -p F:\coffeDog\loadApp2 -p F:\coffeDog\captureStdout2>log.txt

注意:moviepy的包必须使用《关于moviepy打包报错AttributeError: module audio/video.fx.all has no attribute fadein、crop文章的纠错和抄袭》修改了的文件,否则打包执行会报错。

在win7、win10上可运行的可执行程序包已经上传到百度云,大家可以下载下来长期免费使用。具体下载地址为百度网盘。

链接:https://pan.baidu.com/s/1UNaA2UqQBoxx-v8rCIPDhA

提取码:yh2d

选择该链接下的:视频转图片和动画工具V2.0.rar 即可,下载后解压到指定目录后,选择exe文件直接执行即可。不过使用该工具会自动打开老猿的博客请大家点赞,敬请大家支持,谢谢。

注意:

百度云上分享的《咖啡狗免费工具软件共享空间》下的不同软件安装时必须解压到不同目录,如果解压到同一目录可能有冲突导致不能正常运行,
但解压后遵循如下要求可以将其聚合到同一个目录:

  1. 放置到同一目录的不同软件的版本必须相同,版本为压缩文件名中VX.X标注;
  2. 聚合拷贝时除拷贝执行文件外,还有resource目录必须拷贝,如果resource目录下有相同文件名可以覆盖;
  3. 聚合拷贝exe文件和resource目录及其下文件到其他已解压工具目录后,源目录可以删除。

更多moviepy的介绍请参考《PyQt+moviepy音视频剪辑实战文章目录》或《moviepy音视频开发专栏》。

关于老猿的付费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。这2个收费专栏都有对应免费专栏,只是收费专栏的文章介绍更具体、内容更深入、案例更多。

收费专栏文章目录:《moviepy音视频开发专栏文章目录》、《使用PyQt开发图形界面Python应用专栏目录》,本文收费专栏对应文章为《Moviepy音视频开发:开发视频转gif动画或jpg图片exe图形化工具的案例》。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

跟老猿学Python、学Moviepy!

☞ ░ 前往老猿Python博文目录 ░

Moviepy音视频开发:视频转gif动画或jpg图片exe图形化工具开发案例相关推荐

  1. 基于PyQt5的图形化界面开发——模拟医院管理系统

    基于PyQt5的图形化界面开发--模拟医院管理系统 0. 前言 1. 需求分析 2. 挂号界面的思路.UI界面代码及相应触发函数 2.1 思路分析 2.2 ui_guahao.py 2.3 相应的触发 ...

  2. 基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程]

    基于PyQt5的图形化界面开发--Windows内存资源监视助手[附带编译exe教程] 0. 前言 1. 资源信息获取函数--monitor.py 2. UI界面--listen.py 3. main ...

  3. python音视频开发_Python音视频开发:消除抖音短视频Logo的图形化工具实现

    一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现消除视频Logo的四种方法,并提供了详细的 ...

  4. Python音视频开发:消除抖音短视频Logo的图形化工具实现

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现 ...

  5. SpyNote V5.0图形化工具远程控制Android手机教程(图文教程+演示视频)

    *本文原创作者:艾登--皮尔斯,本文属FreeBuf原创奖励计划,未经许可禁止转载 前言 本篇文章主要以图文教程和视频演示详细地教你如何快速学会使用SpyNote 5.0图形化工具来穿透内网远程控制A ...

  6. python图形化界面教程_python图形化界面开发教程

    python图形化界面开发教程内容摘要 python图形化界面开发教程白萝卜:泰兴电工教程,白了点,白兰地是在红葡萄酒的基础.基金从业资格教程学校,白开水.苜蓿干草.提摩西干草.兔粮方法:白居易< ...

  7. 【报表技术】IReport图形化报表开发工具生成PDF文档

    [报表技术]IReport图形化报表开发工具生成PDF文档 新建一个文件. 由于IReport的默认设置是不支持中文的,IReport没有内置中文的包. 了解报表模板结构. ①title:报表标题. ...

  8. 【报表技术】IReport 图形化报表开发工具安装教程

    [报表技术]IReport 图形化报表开发工具安装教程 JasperReport简单介绍 JasperReport是一个强大.灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML, ...

  9. 【笔记】29元microbit套装如何玩——那些支持microbit的图形化编程开发环境

    微信关注公众号 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 继续microbit! 今天来简单盘点一下那些支持microbit的图形化编程开 ...

最新文章

  1. 第55件事 产品疯传的7个基本原则
  2. 计算机与网络应用教材格式化,《计算机与网络应用》正式稿.docx
  3. ContactsContract.Contacts与ContactsContract.CommonDataKinds.Phone的区别
  4. DotNet(C#)自定义运行时窗体设计器 一
  5. oracle 挖掘日志,Oracle 日志挖掘(LogMiner)使用详解
  6. Python--DBUtil
  7. 处理2D图像和纹理——创建2D菜单界面
  8. ❤️《Mybatis从基础到高级》(建议收藏)❤️
  9. objective-c block 讲解
  10. LoRaWAN协议入网方式
  11. SCM:新一代存储介质技术
  12. 10分钟教你搭建自己的ngrok服务器
  13. matlab绘制双叶双曲面,应用MATLAB绘制二次曲面图.doc
  14. Android 电子书
  15. Python字符串函数的使用
  16. 景联文科技:深度了解语音识别之发音词典及语音数据采集标注
  17. 关于下一代防火墙的几个思考
  18. ios html中文显示乱码,iOS读取txt文件出现中文乱码的解决方法
  19. SmartDraw中文输入及显示的问题
  20. 会员管理小程序实战开发教程-会员信息删除

热门文章

  1. Pycharm永久激活七步走
  2. DELPHI中自定义消息的发送和接收
  3. 我是如何实现「朋友圈图片评论」的?
  4. 生化危机 android,生化危机4安卓版
  5. 常用计算机信息的交换标准编码是,信息交换用汉字编码字符集
  6. html传递汉字参数转换,url中如何传递中文信息呢?
  7. ROS群机器人自动驾驶TensorFlow和人脸检测跟踪OpenCV
  8. python jpg压缩_python 实现图片批量压缩的示例
  9. dedecms教程:织梦所有实用标签调用方法搜集整理
  10. 基于混沌透镜成像学习的哈里斯鹰优化算法