使用Python和FFmpeg批量转换视频为GIF

使用Python和FFmpeg批量转换视频为GIF

我们来继续昨天的项目,但是昨天所说的是单个视频转pdf,要实现批量转化,还需进行参数的调整

批量转换视频为GIF的示例代码

下面是一个Python脚本示例,展示了如何遍历一个目录中的所有视频文件,并将它们批量转换为GIF。

python 复制代码
import subprocess
import os

def convert_video_to_gif(input_video_path, output_gif_path, start_time, duration):
    # FFmpeg命令
    command = [
        'ffmpeg',
        '-ss', str(start_time),  # 指定开始时间
        '-t', str(duration),      # 指定持续时间
        '-i', input_video_path,   # 输入视频路径
        '-vf', 'fps=10,scale=320:-1:flags=lanczos',  # 处理视频帧率和尺寸
        '-c:v', 'gif',           # 输出格式为gif
        output_gif_path          # 输出GIF路径
    ]
    
    # 执行命令
    subprocess.run(command)
    print(f"成功将视频 {input_video_path} 转换为GIF {output_gif_path}!")

def batch_convert_videos(input_directory, output_directory, start_time, duration):
    # 确保输出目录存在
    os.makedirs(output_directory, exist_ok=True)

    # 遍历输入目录中的所有文件
    for filename in os.listdir(input_directory):
        if filename.endswith(('.mp4', '.avi', '.mov', '.mkv')):  # 支持的视频格式
            input_video_path = os.path.join(input_directory, filename)
            output_gif_path = os.path.join(output_directory, f"{os.path.splitext(filename)[0]}.gif")  # 输出GIF文件名

            # 确保输入文件存在
            if os.path.exists(input_video_path):
                convert_video_to_gif(input_video_path, output_gif_path, start_time, duration)
            else:
                print(f"输入视频文件 {input_video_path} 不存在,请检查路径。")

# 使用示例
input_directory = 'videos'  # 输入视频文件所在目录
output_directory = 'gifs'    # 输出GIF文件所在目录
start_time = 5               # 从视频的第5秒开始
duration = 2                 # 持续时间为2秒

batch_convert_videos(input_directory, output_directory, start_time, duration)

代码解析

  • 批量处理函数 :batch_convert_videos函数接受输入目录、输出目录、开始时间和持续时间作为参数。
  • 遍历目录 :使用os.listdir遍历输入目录中的所有文件,检查文件扩展名以确定是否为支持的视频格式(如.mp4、.avi、.mov、.mkv)。
  • 生成输出路径 :使用os.path.splitext获取文件名(不带扩展名),并生成输出GIF的路径。
  • 确保输出目录存在 :使用os.makedirs创建输出目录(如果不存在的话)。
  • 调用转换函数 :对每个视频文件调用convert_video_to_gif函数进行转换。

运行脚本

  1. 将你要转换的视频文件放在指定的输入目录(例如videos)。
  2. 运行上述Python脚本,生成的GIF文件将保存在指定的输出目录(例如gifs)中。
相关推荐
程序猿老A6 分钟前
云服务器怎么配置视频存储?
运维·服务器·音视频
AINative软件工程9 分钟前
LLM Prompt Registry 工程实践:集中管理 Prompt,让模型调用不再散落在代码各处
后端·python·llm
开开心心就好13 分钟前
以图搜图找重复图片,本地工具离线就能用
javascript·智能手机·ffmpeg·c#·ocr·word·音视频
Patrick在香港17 分钟前
MCP 的 initialize 握手真的没了?67 行标准库实测 2026-07-28 规范
python·agent·claude·mcp·json-rpc
vx_Biye_Design20 分钟前
springboot角色扮演服务平台65161-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·spring·课程设计
企业数字化笔记22 分钟前
视频局部合成怎么做得自然?掩膜修复、边缘羽化、时序稳定与背景替换
java·javascript·音视频
追烽少年x23 分钟前
从零构建一个3D点云预览器:Python + PySide6 + pyqtgraph 实战
python·3d
weixin_4404016936 分钟前
质朴的爬虫+数据处理
爬虫·python·数据分析·pandas
估值探索者37 分钟前
【Python量化系统工程实战 #01】数据存储选型 CSVSQLiteMySQL 对比与 SQLite 实战建库
开发语言·jvm·python·sqlite·api接口·数据api接口·股票数据api接口
计算机毕业编程指导师41 分钟前
计算机毕设答辩技巧:基于Hadoop+Django的公共交通运营数据分析与可视化系统怎么做 源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·交通运行