一个用Python将视频变为表情包的工具

这是一个将视频转变为表情包的工具,现实生活中当我们看到一段搞笑的视频,我们可以将这段视频喂给这段程序,生成gif表情包,这样就可以用来舍友斗图了

1、一些限制

1、这个程序不能转化超过15秒以上的视频,因为占用的内存较高,会被终端杀死(除非你的计算机性能很好,也许1分钟的短视频都可以),为了整个程序的鲁棒性,我就调成了15秒

2、转化来的gif噪点画质有显著的下降,GIF 格式有颜色限制(通常为 256 色),可能不适合所有类型的图像内容,所以你可能会整出以下的阴间动图

2、正片

复制代码
 1 import cv2#导入库
 2 import sys
 3 import imageio
 4 
 5 def video_turn_gif(add):
 6     cap  = cv2.VideoCapture(add)#读取视频
 7 
 8     video_frames = []#存储帧数据
 9 
10     total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))#总共帧数
11     fps = cap.get(cv2.CAP_PROP_FPS)#帧率
12     time_total = total_frames/fps#总共时间
13 
14     if time_total <= 10:
15         while True:
16             ret, frame = cap.read()
17             if ret:
18                 video_frames.append(frame)#保存视频帧数据
19             else:
20                 cap.release()#重置
21                 imageio.mimsave("test.gif", video_frames, duration=0.005)#将一帧一帧的图像并入gif,这是整个程序的点睛之笔
22                 print("finish!")
23                 sys.exit(1)
24     else:
25         print("太长了,老子不干咯!")
26 
27 if __name__ == "__main__":
28     add_video = input("video_add......")#获取视频地址
29     video_turn_gif(add_video)

我的思路是,通过cv2将视频分为一帧一帧的图像,将图像信息存在一个列表里,然后用imageio库将这一帧一帧的图像合成一个gif文件,保存再结束程序。 cap.get(cv2.CAP_PROP_FRAME_COUNT) 用来获取总共的帧数, cap.get(cv2.CAP_PROP_FPS) 用来获取视频帧率,我们知道,视频时长=帧数/帧率,这样我们就可以得到时间了,进而判断视频是否超过15秒。 ret, frame = cap.read() 获取视频的帧数,ret是一个布尔值,代表着这一帧是否获取,获取则是True,没获取就是False,frame则是这一帧的图像信息。mimsave函数专门保存GIF或其他动画格式的图像,其第一项为存储的文件地址,第二项为一个列表,存入每一帧图像信息,duration=0.005设置GIF中每帧的持续时间为0.005s,也就是5ms

3、实践

这是成果的动图:

也可以看到明显的噪点

所以大家可以通过录屏、爬虫等方式,将原视频进行剪辑,投给这个程序,得到一个搞笑的表情包。去斗图吧!

相关推荐
DeepVisionary4 分钟前
SoundHound 完成收购 LivePerson:股权对价 4300 万美元,实际总成本约 3.04 亿
python·自动化
deepseek2322 分钟前
Google Gemini Agentic Video 上线:88% 少 token 的主动取样如何改写长视频理解
python·多模态·ai agent·gemini·视频理解
Zane199433 分钟前
只重写了 __eq__,为什么类突然变得不可哈希了?常用魔法方法大盘点
后端·python
2601_9628857235 分钟前
如何用 Python 做 A 股全市场扫描选股?(多条件筛选实战)
开发语言·python
零域码客41 分钟前
一文掌握 jQuery + Flask 全栈核心知识点(前端交互 + 后端接口 + 前后端联调)
前端·python·ajax·flask·jquery·前后端联调·web全栈
BYSJMG44 分钟前
计算机毕设选题做什么好?基于大数据的用户美食数据分析与可视化,PySpark预处理+ECharts大屏,含Isolation Forest异常检测算法
大数据·python·信息可视化·数据分析·spark·课程设计·美食
奈斯先生Vector1 小时前
AIGC 视频生成换个拍法:用 Kling Video 把一张人物图变成可剪辑的短故事
开发语言·人工智能·windows·python·aigc·音视频
卷无止境1 小时前
当"精简主义"住进AI编程助手:Ponytail深度解读
后端·python·fastapi
2601_962298271 小时前
交易开拓者通常使用什么编程语言?这种语言如何帮助自动化交易?
java·c++·python·编程语言·自动化交易
心易行者1 小时前
用html在线运行做数据可视化大屏,5个实战场景从入门到上线
大数据·前端·数据库·人工智能·python