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

1. 安装三方库 moviepy

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

pip install moviepy

2. 代码实现:

from moviepy.editor import VideoFileClipmyclip = 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方法可以有效减少生成文件的大小

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv - py_imgproc - py_filtering filtering 过滤-卷积平滑

文章目录 平滑图像目标2D 卷积(图像过滤)图像模糊(图像平滑)1. 平均2. 高斯模糊3. 中值模糊4. 双边滤波 其他资源 平滑图像 目标 学习: 使用各种低通滤波器模糊图像将定制滤波器应用于图像(2D 卷积&…

大数据新视界 -- 大数据大厂之数据质量管理全景洞察:从荆棘挑战到辉煌策略与前沿曙光

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

如何保护网站安全

1. 使用 Web 应用防火墙(WAF) 功能:WAF 可以实时检测和阻止 SQL 注入、跨站脚本(XSS)、文件包含等常见攻击。它通过分析 HTTP 流量来过滤恶意请求。 推荐:可以使用像 雷池社区版这样的 WAF,它提…

大模型中的token是什么;常见大语言模型的 token 情况

目录 大模型中的token是什么 常见大语言模型的 token 情况 大模型中的token是什么 定义 在大模型中,token 是文本处理的基本单位。它可以是一个字、一个词,或者是其他被模型定义的语言单元。简单来说,模型在理解和生成文本时,不是以完整的句子或段落为单位进行一次性处理…

redis安装使用

1. 下载地址 下载最新稳定版本的 redis-windows 7.x 版本(本实例以 7.2.3 为例) # 下载地址 https://download.csdn.net/download/qq827245563/89923840 2. 解压文件 3. 下载可视化工具 # 下载地址 https://download.csdn.net/download/qq827245563/89940627 4. 启动运行 …

ELK + Spring Boot:日志分析入门与实践(一)

目录 一、安装ELK 1.1 版本选择 1.2 linux环境安装 1.3 ES配置启动 1.4 Kibana配置启动 1.5 Logstash配置启动 二、项目调整 2.1 pom依赖调整 2.2 yml配置文件调整 2.3 logback-spring配置 三、日志查询分析 3.1 创建索引模式 3.2 查询日志数据 一、安装ELK 1.1 …

elasticsearch 8.x 插件安装(六)之Hanlp插件

elasticsearch 8.x 插件安装(六)之Hanlp插件 elasticsearch插件安装合集 elasticsearch插件安装(一)之ik分词器安装(含MySQL更新) elasticsearch 8.x插件(二)之同义词安装如何解决…

vi —— 终端中的编辑器

目标 vi 简介打开和新建文件三种工作模式常用命令分屏命令常用命令速查图 01. vi 简介 1.1 学习 vi 的目的 在工作中,要对 服务器 上的文件进行 简单 的修改,可以使用 ssh 远程登录到服务器上,并且使用 vi 进行快速的编辑即可常见需要修改…

stm32cubeIde 使用笔记

划分flash空间 需要更改STM32xxx_FLASH.ld文件 输出其他格式文件

图片批量处理神器将每个文件夹中的多张图片拼接,一键实现横向和纵向的长图拼接效果,让你的图片处理更高效

是不是经常面对一堆图片文件夹,想要把它们里面的宝贝图片一一拼接起来,却又被繁琐的操作吓得直摇头?别担心,今天我要给大家介绍一位图片处理界的超级英雄——首助编辑高手软件!它就像是一位拥有魔法的图片大师&#xf…

【JVM详解JVM优化】聊聊JVM优化

简介: 前面两期文章讲了JVM内存模型:【JVM详解&JVM优化】JVM内存模型-CSDN博客 以及JVM垃圾回收机制:【JVM详解&JVM优化】JVM垃圾回收机制-CSDN博客 在本篇文章中,我们将深入探讨Java虚拟机(JVM)…

通俗易懂的餐厅例子来讲解JVM

餐厅版本 JVM(Java虚拟机)可以想象成一个虚拟的计算机,它能够运行Java程序。为了让你更容易理解,我们可以用一个餐厅的比喻来解释JVM: 菜单(Java源代码): 想象一下,Java…

一文搞懂各种Attention机制

1.各种Attention 最近在重读Transformer论文的过程中,结合其他看过的资料,对各种Attention概念有进一步的了解。回顾最初刚接触时候的迷糊,觉得有必要写一篇文章记录一下对各种attention新的理解。 2.论文中的Transformer架构图 先上经典的…

Python+Appium+Pytest+Allure自动化测试框架-代码篇

文章目录 自动化测试框架工程目录示例测试代码示例结果查看allurepytest编写pytest测试样例的规则pytest conftest.py向测试函数传参 appium启动appium服务代码端通过端口与appium服务通信对设备进行操作在pytest测试用例中调用appium 更多功能 PythonAppiumPytestAllure自动化…

【C++】红黑树的Iterator改造以及mapset的模拟实现与封装

目录 01.红黑树的迭代器 operator: operator*、-> operator、! 02.红黑树的改造 begin和end方法 keyOfValue insert方法 find方法 size方法 clear方法 03.map&set的模拟实现 01.红黑树的迭代器 前面的博客我们介绍了红黑树的底层原理并手撕了一个自己的红…

微信小程序服务通知

项目中用到了小程序的服务消息通知,通知订单状态信息,下边就是整理的一下代码,放到项目中,把项目的小程序appid和小程序的secret写进去,直接运行即可 提前申请好小程序服务信息通知短信模板,代码需要用到模…

linux命令行的艺术

文章目录 前言基础日常使用文件及数据处理系统调试单行脚本冷门但有用仅限 OS X 系统仅限 Windows 系统在 Windows 下获取 Unix 工具实用 Windows 命令行工具Cygwin 技巧 更多资源免责声明 熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际…

2024年最新版SSL证书

SSL证书行业变动很大,随着操作系统,浏览器新版本不断增加,对SSL证书兼容性要求越来也高,对于安全性也有所提升,主流CA机构根证书及交叉链迎来了换新,这是为了延续下一个20个年的安全计划的提前不如&#xf…

Spark入门到实践

Spark入门到实践 一、Spark 快速入门1.1 Spark 概述1.2 Spark 最简安装1.3 Spark实现WordCount1.3.1 下载安装Scala1.3.2 添加Spark依赖1.3.3 Scala实现WordCount1.3.4 通过IDEA运行WordCount1.3.5 IDEA配置WordCount输入与输出路径1.3.6 通过IDEA运行WordCount1.3.7 查看运行结…

vue、小程序腾讯地图开放平台使用

一、登录账号 腾讯地图API 官方文档: 腾讯位置服务 - 立足生态,连接未来 二、申请秘钥 key 从首页【开发文档】-【微信小程序 SDK】进到微信小程序的开发文档:微信小程序JavaScript SDK | 腾讯位置服务 然后我们根据【Hello World】的提示…