使用说明
FFmpeg MCP 服务器
通过base64输入输出,MCP服务器提供FFmpeg视频处理服务。无状态、便携式、无外部依赖。
工具
获取FFmpeg版本
返回FFmpeg的版本信息。
调整视频大小
将视频调整为标准分辨率(360p、480p、720p、1080p)。输出格式为H.264/AAC。
参数:
videoBase64(字符串):Base64编码的视频resolutions(数组):目标分辨率outputFormat(字符串,可选):mp4 或 webm(默认:mp4)
返回值: 每种分辨率对应的Base64编码视频
提取音频
从视频中提取音频轨道。
参数:
videoBase64(字符串):Base64编码的视频format(字符串):mp3、aac、wav 或 ogg
返回值: Base64编码的音频
获取视频信息
检查视频元数据:格式、时长、比特率、分辨率、编解码器、流。
参数:
videoBase64(字符串):Base64编码的视频
返回值: 格式化的元数据
设计
Base64 输入输出(I/O): 所有输入和输出均采用Base64编码。不涉及文件路径、S3 URL或数据库存储。
原因:
- 无状态:无持久化存储、清理操作或孤儿文件
- 便携式:可在任何Node.js环境中运行
- 简单:单次请求/响应周期
约束条件:
- 有效载荷限制:根据运行时的不同,约为4-6 MB
- 最佳用途:缩略图、预览、短视频、音频提取
- 不适用于:故事片、4K处理
处理流程:
- 解码Base64输入 → 临时文件
- 执行FFmpeg
- 读取输出 → 缓冲区
- 删除临时文件
- 将缓冲区编码为Base64
安装
FFmpeg 二进制文件会通过(某种方式)自动安装 ffmpeg-static 并且 @ffprobe-installer/ffprobe。
npm install @windsornguyen/ffmpeg-mcp
配置
Claude Desktop(可译为“Claude桌面版”或根据上下文简化为“Claude桌面应用”)
claude_desktop_config.json:
{
"mcpServers": {
"ffmpeg": {
"command": "npx",
"args": ["-y", "@windsornguyen/ffmpeg-mcp"]
}
}
}
VS Code(Visual Studio Code,简称VS Code)
.vscode/mcp.json:
{
"servers": {
"ffmpeg": {
"command": "npx",
"args": ["-y", "@windsornguyen/ffmpeg-mcp"]
}
}
}
发展
# Install dependencies
bun install
# Build
bun run build
# Test
bun test
# Run STDIO transport
bun run dev:stdio
# Run HTTP transport
bun run dev:shttp
环境变量
PORTHTTP 服务器端口(默认:3002)NODE_ENV开发 | 生产
测试
# Run all tests
bun test
# Run with output artifacts (kept in tests/output/)
bun test --keep-artifacts
# Single test file
bun test tests/ffmpeg.test.ts
测试验证了base64往返编码、分辨率准确性以及编解码器合规性。输出文件已保存至 tests/output/ 当……的时候 --keep-artifacts 已被设置。
建筑学
- 客户 (
src/client.ts): 使用Base64输入输出执行FFmpeg - 工具 (
src/tools/ffmpeg.ts): MCP 工具定义 - 服务器 (
src/server.ts): 请求路由 - 交通 (
src/transport/): 支持STDIO和HTTP
许可证
麻省理工学院(MIT)许可证。详见LICENSE文件。