当前位置: 首页 > news >正文

【强烈推荐】视频转gif、图片拼gif,嘎嘎好用,免费免费真的免费,亲测有效,无效过来打我

问题描述

        最近遇到一个需求是需要将视频生成gif,这个看上去不是很难,所以有了以下的解决办法

解决办法

        首先想到的当然是自己写一个,用了两套代码:

from moviepy.editor import *# 读取视频文件
video_clip = VideoFileClip("280361337.mp4")# 将视频转为gif格式
gif_clip = video_clip.to_gif("output.gif")# 关闭视频文件
video_clip.close()

        运行这个的话可能会遇到的问题就是没有moviepy这个module,pip install一下就可以了,但是安装完之后会报错提示有些依赖包没有,只需要按提示逐个安装就行了。

        但是上述的代码不能够控制帧率和大小,于是又完善了一下。

import imageio
from PIL import Imagedef convert_video_to_gif(input_path, output_path, fps=10, scale=0.5):# 读取视频文件video = imageio.get_reader(input_path)# 获取视频的帧率、宽度和高度fps_video = video.get_meta_data()['fps']width, height = video.get_meta_data()['source_size']# 设置输出的帧率和尺寸output_fps = min(fps, fps_video)output_width = int(scale * width)output_height = int(scale * height)# 创建一个Image对象列表,用于保存每一帧的图像frames = []for frame in video:# 调整帧的尺寸frame_img = Image.fromarray(frame).resize((output_width, output_height), Image.ANTIALIAS)frames.append(frame_img)# 保存为gif动图frames[0].save(output_path, format='GIF', append_images=frames[1:], save_all=True, duration=1000/output_fps, loop=0, optimize=True)# 关闭视频文件video.close()# 调用函数进行视频转换为gif
convert_video_to_gif("studio_video_1698138576505.mp4", "output4.gif", fps=20, scale=1)

        这样一来就能比较控制帧率和大小了,但相比来说只压缩了一半,还是有点大,也正因为这个原因,没有办法在这里展示效果,简单来说,效果还是可以的,只是太大了超过了5M,所以不能上传。

更好的办法        

        像这种都有现成的工具,比如本次推荐的这个就是,效果挺好的,

        压缩比大概为1/5

        可以自己指定宽度

        也可以进行压缩,只是这个过程有点曼,能再压缩1/2,效果几乎无变化

        还支持其他的功能

http://www.lryc.cn/news/206332.html

相关文章:

  • C# Onnx Yolov8 Detect 印章 指纹捺印 检测
  • 0034【Edabit ★☆☆☆☆☆】【修改Bug4】Buggy Code (Part 4)
  • 第十五篇-推荐-Huggingface-镜像-2023-10
  • Macos文件图像比较工具:Kaleidoscope for Mac
  • Docker搭建Plex流媒体服务并播放自己本地视频
  • idea + Docker-Compose 实现自动化打包部署(仅限测试环境)
  • ubuntu 下载Python
  • python 使用json包在json格式字符串和python对象之间的变化
  • 【C++】继承 ⑫ ( 继承的二义性 | virtual 虚继承 )
  • Linux网络流量监控iftop
  • 【虚幻引擎UE】UE4/UE5 基于2D屏幕坐标获取场景3D坐标 射线检测(蓝图/C++)
  • 【OpenHarmony】系统编译环境搭建笔记
  • 深入理解JVM虚拟机第十二篇:JVM中的线程说明
  • synchronized 、ReentrantLock
  • 用VSCODE启动Java项目
  • 最简单的修改linux系统上Docker的镜像源
  • layui移除(删除)table表格的一行
  • 67 跳跃游戏 II
  • 客户中心模拟(Queue and A, ACM/ICPC World Finals 2000, UVa822)rust解法
  • 方案聚焦:高可用的F5分布式云DNS负载均衡
  • 大数据性能测试方案-V1.0
  • Kafak - 单机/集群快速安装指北(3.x版本)
  • 互联网Java工程师面试题·Spring篇·第五弹
  • XTU-OJ 1221-Binary
  • Chromium源码由浅入深(三)
  • 如何集成验证码短信API到你的应用程序
  • Linux- 由映射文件I/O问题引出的SIGBUS 空洞文件(Sparse File)
  • 代码随想录图论 第二天 | 695. 岛屿的最大面积 1020. 飞地的数量
  • R语言代码示例
  • ESP32网络开发实例-将 ESP32 连接到 EMQX Cloud MQTT Broker