Skip to main content
Glama

FFmpeg MCP Tool

by LBJWt
README.md7.37 kB
# FFmpeg MCP Tool 一个基于FFmpeg的MCP(Model Context Protocol)工具,用于处理图片和视频的转码、压缩等操作。 ## 功能特性 ### 图片处理 - 图片压缩(单个文件或批量处理) - 图片格式转换(JPG、PNG、BMP、GIF、TIFF、WebP等) - 图片尺寸调整 - 获取图片信息 ### 视频处理 - 视频压缩(支持H.264编码) - 视频格式转换(MP4、AVI、MKV、MOV等) - 视频尺寸调整 - 获取视频信息 ### 批量处理 - 支持批量压缩指定文件夹中的所有图片 - 支持批量压缩指定文件夹中的所有视频 - 自动识别常见的图片和视频格式 ## 系统要求 1. Python 3.8+ 2. FFmpeg(必须安装并可在命令行中使用) ## 安装步骤 ### 1. 安装FFmpeg #### Windows - 下载FFmpeg:https://ffmpeg.org/download.html#build-windows - 解压到某个目录(如 `C:\ffmpeg`) - 将 `C:\ffmpeg\bin` 添加到系统PATH环境变量 - 打开命令提示符,运行 `ffmpeg -version` 验证安装 #### macOS ```bash brew install ffmpeg ``` #### Linux (Ubuntu/Debian) ```bash sudo apt update sudo apt install ffmpeg ``` ### 2. 安装Python依赖 ```bash pip install -r requirements.txt ``` ## 使用方法 ### 1. 启动MCP服务器 ```bash python start_server.py ``` ### 2. 配置MCP客户端 将 `config.json` 中的配置添加到你的MCP客户端配置中: ```json { "mcpServers": { "ffmpeg": { "command": "python", "args": ["path/to/ffmpeg_mcp.py"], "env": null } } } ``` ### 3. 可用工具 #### 图片处理工具 ##### `compress_image` 压缩单个图片文件 ```json { "input_path": "D:/input/image.jpg", "output_path": "D:/output/compressed.jpg", "quality": 85 } ``` ##### `batch_compress_images` 批量压缩指定文件夹中的所有图片 ```json { "input_dir": "D:/1", "output_dir": "D:/output", "quality": 85 } ``` ##### `convert_image_format` 转换图片格式 ```json { "input_path": "D:/input/image.png", "output_path": "D:/output/image.jpg" } ``` ##### `resize_image` 调整图片尺寸 ```json { "input_path": "D:/input/image.jpg", "output_path": "D:/output/resized.jpg", "width": 800, "height": 600 } ``` #### 视频处理工具 ##### `compress_video` 压缩单个视频文件 ```json { "input_path": "D:/input/video.mp4", "output_path": "D:/output/compressed.mp4", "crf": 23, "preset": "medium" } ``` ##### `batch_compress_videos` 批量压缩指定文件夹中的所有视频 ```json { "input_dir": "D:/videos", "output_dir": "D:/output", "crf": 23, "preset": "medium" } ``` ##### `convert_video_format` 转换视频格式 ```json { "input_path": "D:/input/video.avi", "output_path": "D:/output/video.mp4" } ``` ##### `resize_video` 调整视频尺寸 ```json { "input_path": "D:/input/video.mp4", "output_path": "D:/output/resized.mp4", "width": 1280, "height": 720 } ``` #### 信息工具 ##### `get_media_info` 获取媒体文件详细信息 ```json { "file_path": "D:/media/file.mp4" } ``` ##### `check_ffmpeg_status` 检查FFmpeg是否安装并可用 ```json {} ``` ## 参数说明 ### 图片压缩质量 (quality) - 范围:1-100 - 数值越高,质量越好,文件越大 - 推荐值:80-90 ### 视频压缩质量 (crf) - 范围:18-28 - 数值越小,质量越高,文件越大 - 推荐值: - 高质量:18-20 - 平衡:21-24 - 小文件:25-28 ### 视频压缩速度预设 (preset) - `ultrafast`:最快速度,文件最大 - `superfast, veryfast, faster, fast`:速度递减,质量递增 - `medium`:平衡选择(默认) - `slow, slower, veryslow`:速度最慢,质量最好 ## 支持的文件格式 ### 图片格式 - 输入:JPG, JPEG, PNG, BMP, GIF, TIFF, WebP - 输出:根据输出文件扩展名自动判断 ### 视频格式 - 输入:MP4, AVI, MKV, MOV, WMV, FLV, WebM, M4V - 输出:根据输出文件扩展名自动判断 ## 使用示例 ### 批量压缩图片 假设你有一个文件夹 `D:/1` 包含很多JPG图片,想要压缩后保存到 `D:/output`: ```python # 使用MCP客户端调用 tool_call = { "name": "batch_compress_images", "arguments": { "input_dir": "D:/1", "output_dir": "D:/output", "quality": 80 } } ``` ### 视频格式转换 将AVI格式转换为MP4: ```python tool_call = { "name": "convert_video_format", "arguments": { "input_path": "D:/video.avi", "output_path": "D:/output/video.mp4" } } ``` ## 实际应用案例 ### 网站图片批量优化 **场景**:网站有大量高分辨率图片需要优化以提高加载速度 **操作**: ``` 用户:我需要优化网站的所有图片,它们在 D:/website/images 目录, 请压缩到 D:/website/optimized,质量保持在 80-85 之间 ``` AI助手自动执行: 1. 调用 `batch_compress_images` 工具 2. 处理目录中的所有图片 3. 生成压缩报告,显示节省的存储空间 **结果**:假设处理了 500 张图片,平均压缩率 60%,节省了约 2GB 存储空间。 ### 视频素材格式转换 **场景**:将不同格式的视频素材统一转换为 MP4 格式 **操作**: ``` 用户:把 D:/videos/raw 目录下的所有视频转换为 MP4 格式, 保存到 D:/videos/mp4,使用中等压缩质量 ``` AI助手处理流程: 1. 识别目录中的所有视频文件(AVI、MKV、MOV等) 2. 逐个转换为 MP4 格式 3. 应用 H.264 编码和 AAC 音频编码 4. 报告转换结果 ### 社交媒体图片批量调整 **场景**:为不同社交平台准备合适尺寸的图片 **操作**: ``` 用户:将 D:/photos/original 中的照片调整为 1080x1080 正方形, 适合 Instagram 发布,保存到 D:/photos/instagram ``` AI助手会: 1. 调用 `resize_image` 工具 2. 批量处理所有图片 3. 调整为指定尺寸 4. 保持合适的压缩质量 ## 错误处理 工具会自动处理常见错误: - 输入文件不存在 - 输出目录不存在(会自动创建) - FFmpeg命令执行失败 - 不支持的文件格式 ## 注意事项 1. 确保有足够的磁盘空间用于输出文件 2. 大文件处理可能需要较长时间 3. 批量处理时会跳过无法处理的文件并在结果中报告 4. 输出路径中的目录会被自动创建 ## 故障排除 ### FFmpeg未找到 ``` 错误:FFmpeg 未安装或不可用 ``` 解决方案: 1. 确认FFmpeg已正确安装 2. 确认FFmpeg已添加到系统PATH 3. 在命令行运行 `ffmpeg -version` 验证 ### 文件权限错误 确保Python有读取输入文件和写入输出目录的权限。 ### 内存不足 对于大文件或大量文件,可能需要: 1. 增加系统内存 2. 分批处理文件 3. 调整FFmpeg参数 ## 开发和扩展 项目结构: ``` ffmpeg-mcp/ ├── ffmpeg_mcp.py # 主要的MCP服务器代码 ├── requirements.txt # Python依赖 ├── config.json # MCP配置文件 ├── start_server.py # 服务器启动脚本 ├── test_example.py # 使用示例 └── README.md # 说明文档 ``` 如需添加新功能,可以: 1. 在 `FFmpegProcessor` 类中添加新的处理方法 2. 在 `handle_list_tools()` 中注册新工具 3. 在 `handle_call_tool()` 中处理新工具的调用 ## 许可证 MIT License - 可自由使用和修改。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LBJWt/ffmpeg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server