python读取视频并转换成gif图片

1. 安装三方库 moviepy

将视频转换成gif,需要使用 moviepy库
确保已经安装了moviepy库

pip install moviepy

2. 代码实现:

from moviepy.editor import VideoFileClip

myclip = VideoFileClip("video.mp4")
myclip2 = myclip.subclip(0, 10).resize(width=300)
# save gif
myclip2.write_gif("video.gif")

出现的问题1:

直接运行发现报错
错误
提示module 'PIL.Image' has no attribute 'ANTIALIAS'
原因是因为 我安装的PIL版本是 10.4.0,而 ANTIALIAS方法已经在新的版本中移除了,替换成了Image.LANCZOS
Image.Resampling.LANCZOS 所以我们可以把pillow降级或修改源代码

解决办法:

  • 方法 1:降级 Pillow 版本
    你可以将 Pillow 降级到 9.4.0 或更早的版本,这些版本中 ANTIALIAS 属性依然存在:
pip uninstall -y Pillow
pip install Pillow==9.4.0
  • 方法 2:修改 moviepy 源代码
    如果不想降级 Pillow,你也可以修改 moviepy 的源码,替换 ANTIALIASLANCZOS。具体步骤如下:
  1. 找到 moviepy 的安装目录,可以通过以下命令查看路径:

    import moviepy
    print(moviepy.__file__)
    
  2. 通过上述报错可以发现 方法调用是在 moviepy 源码中的 moviepy/video/fx/resize.py文件中,找到 ANTIALIAS 并替换为 LANCZOS
    替换
    替换完成之后就可以生成gif格式的动图了

问题二:

生成gif 后发现大小比原视频还大。所以要接着减少大小

解决方法:

1. 降低分辨率

降低 GIF 的分辨率可以显著减少文件大小。在 resize 中指定更小的宽度(或高度):

myclip2 = myclip.subclip(0, 10).resize(width=150)  # 适当减小宽度

2. 降低帧率

GIF 不需要太高的帧率,通常 10-15 fps 就足够了。使用 moviepyset_fps 函数来降低帧率:

myclip2 = myclip.subclip(0, 10).resize(width=150).set_fps(10)

3. 减少颜色数量

GIF 支持的颜色最多是 256 色,减少颜色数量可以减小文件大小。可以使用 moviepywrite_gif 函数的 colors 参数:

myclip2.write_gif("output.gif", fps=10, colors=128)  # 降低颜色数量

4. 减少播放时间

如果可以,将 GIF 的时长尽量缩短,例如:

myclip2 = myclip.subclip(0, 5)  # 只截取前5秒

通过以上方法,可以有效减少生成gif的大小。

总结:通过moviepy可以生成gif图片,通过resize方法可以有效减少生成文件的大小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905354.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人工智能原理实验二:搜索方法

一、实验目的 本实验课程是计算机、智能、物联网等专业学生的一门专业课程,通过实验,帮助学生更好地掌握人工智能相关概念、技术、原理、应用等;通过实验提高学生编写实验报告、总结实验结果的能力;使学生对智能程序、智能算法等…

在Centos7.9服务器上使用LVM方式挂载磁盘以及Windows磁盘性能测试与Linux磁盘性能测试命令hdparm详细

一、在Centos7.9服务器上使用LVM方式挂载磁盘 在磁盘分区挂载之前,先使用lsblk命令查看磁盘信息,未分区挂载的磁盘sdb只有disk类型没有part类型。40G的硬盘sda已经分了两个区sda1、sda2。而sdb磁盘下并没有分区信息,说明还没有分区。磁盘分区…

dicom基础:乳腺影像方位信息介绍

目录 一、轴位 (CC, Craniocaudal) 二、侧位 (Lateral) 三、侧斜位 (MLO, Mediolateral Oblique) 四、不同的拍摄方位的乳腺影像展示 1、RCC(Right Craniocaudal) 2、LCC(Left Craniocaudal) 3、RMLO(Right Medio…

uniapp 报错Invalid Host header

前言 在本地使用 nginx 反向代理 uniapp 时,出现错误 Invalid Host header 错误原因 因项目对 hostname 进行检查,发现 hostname 不是预期的,所以,报错 Invalid Host header 。 解决办法 这样做是处于安全考虑。但&#xff0…

10个领先的增强现实平台【AR】

增强现实 (AR) 被描述为一种通过计算机生成的内容增强现实世界的交互式体验。 使用软件、应用程序和硬件(例如 AR 眼镜),AR 能够将数字内容叠加到现实环境和物体上。早在 2024 年,许多像 Apple 这样的公司就已进入 VR/AR 市场&am…

匹配——rabin_karp是怎么滚动的?

滚动散列函数 接前面用例公式滚动last_pos第三行第二行第一行证明后话接前面 匹配——散列法里面只说前一个字符乘以128再对72057594037927931求模,答案乘以128加后一个字符再对72057594037927931求模。对应代码: hash_s = (DOMAIN * hash_s + ord(s[i])) % PRIME用例 还是…

国产数据库之Vastbase海量数据库 G100

海量数据库Vastbase是基于openGauss内核开发的企业级关系型数据库。其语法和Oracle数据库很像,基本是从Oracle数据库迁移到海量数据库,以下简单介绍入门的使用 1、建库操作 地址:x.x.x.x root/Qa2021 安装路径:/home/vastbase 创…

进程、孤儿进程、僵尸进程、fork、wait简介

进程相关概念 程序和进程 程序:是指编译好的二进制文件,在磁盘上,占用磁盘空间, 是一个静态的概念. 进程:一个启动的程序, 进程占用的是系统资源,如:物理内存,CPU,终端等…

【万兴科技-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

【笔记】数据结构与算法

参考链接:数据结构(全) 参考链接:数据结构与算法学习笔记 一些PPT的整理,思路很不错,主要是理解角度吧,自己干啃书的时候结合一下会比较不错 0.总论 1.数据 注:图是一种数据结构!!…

匿名内部类的理解

这个知识点困惑我很久,前几天面试的时候也问到了,没回答出来 首先先说说使用步骤吧 1.有一个接口,且含有一个抽象方法(通常情况我们不会写abstract关键字,冗余的) 2.然后有一个外部类(Anonymo…

深入探索电能消耗数据:基于机器学习的分析与洞察

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

架构的本质之 MVC 架构

前言 程序员习惯的编程方式就是三步曲。 所以,为了不至于让一个类撑到爆💥,需要把黄色的对象、绿色的方法、红色的接口,都分配到不同的包结构下。这就是你编码人生中所接触到的第一个解耦操作。 分层框架 MVC 是一种非常常见且常…

突破挑战,创新前行 | 生信科技SOLIDWORKS 2025新品发布会·合肥站精彩回顾

2024年10月18日,由生信科技举办的首场SOLIDWORKS 2025新产品发布会在安徽合肥圆满落幕。现场邀请到制造业的专家学者们一同感受SOLIDWORKS 2025最新功能,探索制造业数字化转型之路。 合肥站活动日,由生信科技副总经理徐建开场。他以智造无界&…

鸿蒙HarmonyOS应用开发者(基础+高级)认证

文章目录 鸿蒙HarmonyOS应用开发者(基础高级)认证👉1.HarmonyOS认证介绍1.1、HarmonyOS发展历程1.2、HarmonyOS NEXT 开发预览版1.3、ArkTS语言开发鸿蒙应用1.4、HarmonyOS应用开发者基础认证的核心内容1.5、HarmonyOS应用开发者高级认证的核心内容1.6、HarmonyOS应…

三菱变频器A800\F800\D700E700\CS80等系列变频器选件一览

配备了丰富的选配件,可以提升变频器的性能、增加功能、支持更多的安装方式等。 变频器和外围设备 选件表

精准提炼 | SOLIDWORKS 2025:工程图与钣金焊件新功能

SOLIDWORKS 每年的更新都致力于提升用户的设计效率与体验,SOLIDWORKS 2025 同样带来了众多改进,下面让我们快速了解一下在SOLIDWORKS 2025 工程图与钣金焊件方面的新功能。 工程图相关 一、表面粗糙度符号标注 新版本现在将符合更新 ISO 标准 (ISO 21…

SpringBoot核心框架之AOP详解

SpringBoot核心框架之AOP详解 一、AOP基础 1.1 AOP概述 AOP:Aspect Oriented Programming(面向切面编程,面向方面编程),其实就是面向特定方法编程。 场景:项目部分功能运行较慢,定位执行耗时…

【万户软件-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

HBuilder X 中Vue.js基础使用4->表单输入绑定(三)

表单绑定是实现动态数据双向绑定的重要部分,它让开发者可以轻松地管理和响应用户输入。本文将详细介绍如何在Vue 3中利用v-model指令以及一些特定修饰符来处理不同类型的表单输入。 v-model双向数据绑定 Vue的 v-model 指令提供了双向绑定的功能,key在…