视频处理服务器

FFmpeg MCP Server是一个基于FFmpeg的视频处理服务,提供视频转码、音频提取和元数据获取等功能,适用于短片段处理和音频提取等场景。

  • by windsornguyen
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 windsornguyen/ffmpeg-mcp

使用说明

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处理

处理流程:

  1. 解码Base64输入 → 临时文件
  2. 执行FFmpeg
  3. 读取输出 → 缓冲区
  4. 删除临时文件
  5. 将缓冲区编码为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文件。