PyQt(Python+Qt)学习随笔:MoviePy视频转GIF动图相关方法介绍
阅读原文时间:2023年07月08日阅读:1

MoviePy能处理的视频是ffmpeg格式的,老猿理解支持的文件类型至少包括:*.mp4 *.wmv *.rm *.avi *.flv *.webm *.wav *rmvb 。

MoviePy有很多与视频相关的功能,包括剪辑、合成、分离音视频等,在此老猿只用了其中的视频转gif的功能,老猿暂时没准备去深入研究,在此也不多介绍,大家可以参考《MoviePy - 中文文档(一个专业的python视频编辑库)教程》的介绍以及英文版官方文档https://zulko.github.io/moviepy/中文版文档:http://moviepy.cn/。在此就说明如下几点:

  1. 安装:pip安装时,请将站点指向国内的镜像站点,否则下载很慢或者下载不下来,老猿使用清华的镜像,指令是:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple moviepy

    注意moviepy全小写,安装时会自动安装相关依赖包,这点与上面文章介绍的有出入。

  2. 模块导入:moviepy是一个包,由于只使用视频转gif,相关功能在editor模块内,因此导入使用指令:

    import moviepy.editor as mpe

  3. 视频文件装载方法:

    VideoFileClip(videoFile)

    这个方法就是构造一个VideoFileClip对象,这个对象就是视频的内容,可以通过该对象对视频进行剪辑等操作

  4. 截取视频方法:

    subclip(start,end)

    参数start和end是视频起止位置,如果是整数单位是秒,也可以是其他时间设置方法,如:2分12.5秒,表示方法可以是(2,12.5)、(0,2,12.5)或者 (00:02:12.5)。

    返回值还是一个VideoFileClip对象。

  5. 输出视频到gif文件的方法:

    write_gif(gifFileName,fps=fps)

    write_gif有很多参数,除了第一个参数是文件名外,其他参数都是关键字参数(不明白关键字参数的请参考《第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲》),在此老猿仅使用了fps参数,其他参数就不展开说了。fps参数是指生成GIF是每秒抽取的帧数,这个数字越大,同样视频生成的gif文件就越大,所以需要有所取舍。

    6、关闭视频缓存方法:close方法用于关闭视频缓存。

示例代码:
        import moviepy.editor as mpe
        cache = mpe.VideoFileClip(r"c:\temp\操作录屏.mp4").subclip(0,15)
        cache.write_gif(r"c:\temp\操作录屏.gif",fps=2)

具体实现请参考《第15.40节、PyQt(Python+Qt)实战:moviepy实现MP4视频转gif动图的工具