将视频转换为GIF

"""
将视频转换为GIF
- 提供一个工具将视频文件转换成动画GIF。支持多种视频格式,转换质量可配置。
"""

import os
from moviepy.editor import VideoFileClip

# 定义视频转换质量的基类
class ConversionQuality:
    def __init__(self, scale, fps, program):
        self.scale = scale
        self.fps = fps
        self.program = program

# 高质量转换,需要imageio模块
class HighestQuality(ConversionQuality):
    def __init__(self):
        super().__init__(1.0, 12, "imageio")

# 中等质量转换
class MediumQuality(ConversionQuality):
    def __init__(self):
        super().__init__(0.6, 12, "ffmpeg")

# 低质量转换
class LowQuality(ConversionQuality):
    def __init__(self):
        super().__init__(0.2, 8, "ffmpeg")

# 视频转换为GIF的函数
def convert2gif(path, quality=MediumQuality(), out_filename=None):
    try:
        # 分离文件名和扩展名
        filename, _ = os.path.splitext(path)
        
        # 开始转换视频到GIF
        with VideoFileClip(path).resize(quality.scale) as clip:
            # 如果没有指定输出文件名,则默认使用原文件名加上.gif后缀
            if not out_filename:
                out_filename = f"{filename}.gif"
            
            # 写入GIF文件
            clip.write_gif(out_filename, fps=quality.fps, program=quality.program)
            return out_filename
    
    except Exception as e:
        # 异常处理,打印出错误信息
        print(f"转换过程中出现错误:{e}")
        return None

# 主执行入口
if __name__ == '__main__':
    try:
        # 请求用户输入文件名
        file = input("请输入视频文件名(包括路径): ")
        
        # 调用转换函数
        result = convert2gif(file)
        
        # 如果转换成功,打印输出位置
        if result:
            print(f"GIF已生成,位置:{result}")
    
    except Exception as e:
        # 捕获主流程中的异常
        print(f"执行过程中出现错误:{e}")

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值