Python实现视频转 gif 动图
Python实现视频转 gif 动图
1. 准备工作
需要准备用于生成 gif
的 视频文件 ,另外,就是需要用到 moviepy
库,关于这个库更详细的介绍可以查看它的官方文档。
https://zulko.github.io/moviepy/
命令行键入pip安装吧
pip install moviepy
这就搞定第1步了!
上面就完成了实现这个功能的模块了
想要实现
动态效果
上面gif动图是通过下面代码实现的python
from moviepy.editor import *clip = (VideoFileClip("video(4).mp4").resize((488,225)))
clip.write_gif("movie.gif",fps=15) #设置为每秒15帧
制作动图的制作脚本。
from moviepy.editor import *video_path = "F:\PythonCool\视频\【咒术回战】第20集五条悟帅的有些过分了.mp4"
video = VideoFileClip(video_path)
clip = (video.subclip((2,4.5),(2,6.0)).resize(0.2))
clip.write_gif("动图搞定了.gif",fps=8)
我们原始视频素材是尺寸 1920*1080
,帧率是 30
。
视频属性
本次转动图的参数设定如下:
subclip((2,4.5),(2,6.0)
选取的是整个视频从2.45秒到2.60秒resize(0.2)
尺寸大小改为原始大小的0.2也就是1/5大小(毕竟动图尺寸大小其文件大小也太大)write_gif("动图搞定了.gif",fps=8)
保存gif的时候将帧率调整为了8
基于上述参数设定下,这个动图一共其实是 (2.60-2.45)*8=12
张图构成!
3. 截取区域转动图
有时候我们可能只需要截取屏幕中指定矩形区域来进行动图的制作,这就要用到 crop
函数截图区域了。
video.crop(x1=None,y1=None,x2=None,y2=None,width=None,height=None,x_center=None,y_center=None,
)
参数:
x1
、y1
:矩形区域左上角坐标
x2
、y2
:矩形区域右下角坐标
width
、height
:是宽度和高度
x_center
、y_center
:表示x1的坐标为x_center-width/2,x2的坐标为x_center+width/2,y_center类似处理
比如,我们截图人物所在区域制作动图代码如下:
crop = (video.subclip((2,4.5),(2,6.0)).resize(0.2).crop(x1=70,y1=0, x2=310,y2=216))
crop.write_gif("裁剪.gif",fps=8)
裁剪
这里关于左上角和右下角坐标的确定可以采用 preview
方法预览视频,然后鼠标点击对应位置来获取。
video.resize(0.2).preview()
- 固定区域转动图
- 对于上面那个动图中 的搞定了,我们希望它常驻,那么可以通过截图搞定了出现这一时刻的内容,然后覆盖到原来位置常驻即可。
snapshot = (crop# 截图区域.crop(x1=100,y1=190, x2=140,y2=216) # 截取的时间段(1秒的时候).to_ImageClip(1)# 设置位置(左上角,和截取区域的左上角一致).set_position((100, 190)).set_duration(crop.duration))
# 合并
composition = CompositeVideoClip([crop, snapshot])
composition.write_gif('覆盖.gif', fps=8)
5. 添加自定义文本
对于上面这个操作,我们还有很多方法来完成,比如用一张带有搞定了的图片去覆盖(和上面的案例类似,只是不需要单独截图而是读取一张现成的);另外,我们还可以通过添加蒙版再加上自定义文字的形式来玩。
from moviepy.video.VideoClip import TextClip# 蒙版
mask = (# 长宽为40*20的颜色为黑色的maskColorClip((40, 20), (0, 0, 0))# 设置位置(同第4节).set_pos((100, 190)).set_duration(crop.duration))
# 文字
text = (TextClip("搞定啦",fontsize=30, color='white',font='SimHei', interline=-25).set_pos((80, 160)).set_duration(crop.duration))composition = CompositeVideoClip([crop, mask, text])
composition.write_gif('覆盖.gif', fps=8)
Python实现视频转 gif 动图相关推荐
- 用Python实现视频转 Gif 动图打包并配置到自己电脑上
用Python实现视频转 Gif 动图打包并配置到自己电脑上 文章目录 用Python实现视频转 Gif 动图打包并配置到自己电脑上 参考 前言 一.视频转Gif的Python代码实现? 二.Pyth ...
- 用Python代码实现视频转gif动图
下面是一个使用 Python 代码实现视频转 gif 动图的简单示例: import imageio# 读取视频文件 video = imageio.get_reader('input.mp4')# ...
- python 制作gif-怎样用Python制作好玩的GIF动图
原标题:怎样用Python制作好玩的GIF动图 作者: 景略集智 https://jizhi.im/blog/post/pytogif 程序员共读整理发布,转载请联系作者获得授权 之前我们分享过用Py ...
- 怎么把视频压缩成表情包?如何把视频做成GIF动图
平时我们看到的电影.电视剧.综艺.动漫等等的视频其实都可以作为制作gif动图的素材来使用,我们可以截取视频中的一小部分来转换成gif,这样无论是在聊天时或者是新媒体工作者在写文章时都可以方便使用,那么 ...
- 如何把视频转换为gif动图
如何把视频转换为gif动图 使用网站(https://www.mnggiflab.com/video-to-gif)可以很方便的将视频(mp4 等 web 支持的视频格式)转换为 gif 动图格式,本 ...
- FFmpeg进阶: 截取视频生成gif动图
文章目录 1.封装视频滤镜 2.截取视频生成gif 3.gif优化 4.示例效果 现在互联网上很多人都通过表情包来表达自己的情绪,常用的表情包很多都是视频文件的一部分.这里就介绍一下如何通过ffmpe ...
- Java截取视频生成Gif动图
添加jar包依赖 <!-- 视频截图 --> <dependency><groupId>org.bytedeco</groupId><artifa ...
- 如何将视频做成gif动图?
如果说视频是一种记录,那么gif动图就是表达心理情绪的一种方式,在现代的社交方式中,很多小伙伴都热衷于使用gif动图来表达自己的喜怒哀乐,这样就会很轻松而愉快的将自己的心理状态表达给对方,而对方在读取 ...
- android 视频转表情包,视频转gif动图怎么转?一款能制作表情包的软件,年轻人很爱用...
视频转gif动图怎么转?现如今,很多年轻人都喜欢用表情包来进行社交聊天.迅捷视频转换器功能强大,是一款可以制作出有趣表情包的软件.如果你刚好也想制作出自己喜欢的表情包,继续往下看会得到满意答案哦. 打 ...
最新文章
- 面试官:谈一下你对DDD的理解?我:马什么梅?
- azkaban 与 java任务_Azkaban的任务类型分析35:JavaProcessJob的执行
- 浅析SEO网站优化的三点高质量外链优化技巧
- 学习运维工程师是正确的选择,发展与前景都是和好的
- python getopts_linux bash shell 中getopts 命令 和 python 中 getopt 函数的比较总结
- 三调 图斑地类面积_三调对于最小上图图斑面积的要求是:
- poj3061 尺取法 挑战程序设计竞赛
- 收藏 | 机器学习中需要了解的 5 种采样方法
- 在提交消息中链接到GitHub上的问题编号
- 线性代数中一些有关秩的不等式
- “DropDownList1”有一个无效 SelectedIndex,因为它不在项目列表中。
- 国电集团:电子招投标每年节约成本10亿元
- 加州理工学院公开课:机器学习与数据挖掘_学习问题(第一课)
- QT Critical error detected c0000374
- 期货开户线上线下开户流程
- python如何给一个xls文件修改数据_Python-修改xls文件示例
- “喜茶Go”微信小程序新零售商业实战案例经验分享-概述
- 劣质代码评析——《写给大家看的C语言书(第2版)》附录B之21点程序(二)
- python抓取dblp网站的arXiv论文,下载保存成pdf
- 国开计算机应用技术形考任务4答案,国家开放大学《数据库应用技术》形考任务1-4参考答案...