使用说明

项目简介

FFmpeg MCP Server 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为大型语言模型 (LLM) 应用提供便捷的音视频处理能力。它封装了强大的 FFmpeg 工具,使 LLM 能够通过标准化的 MCP 协议调用 FFmpeg 的各项功能,例如视频加速、音频提取等。

主要功能点

  • 视频加速: 支持通过 'speed_up' 工具加速视频播放速度,可自定义加速倍速和最大帧率。
  • 音频提取: 支持通过 'extract_audio' 工具从视频文件中提取音频并保存为 MP3 格式。
  • 基于 MCP 协议: 遵循 MCP 协议标准,易于与各种 MCP 客户端集成,实现 LLM 对音视频处理功能的调用。
  • 可扩展性: 基于简单的工具注册机制,未来可以轻松扩展更多 FFmpeg 的音视频处理功能。
  • 标准化接口: 通过 JSON-RPC 协议进行通信,提供清晰、规范的 API 接口。

安装步骤

  1. 安装 Node.js 和 npm: 确保你的系统中已安装 Node.js 和 npm (Node 包管理器)。你可以从 https://nodejs.org/ 下载并安装。

  2. 下载仓库代码: 从 GitHub 仓库 https://github.com/ZizoTheDev/ffmpeg-mcp 下载代码,你可以使用 'git clone https://github.com/ZizoTheDev/ffmpeg-mcp' 命令克隆仓库到本地。

  3. 安装依赖: 进入仓库根目录,运行命令 'npm install' 安装项目所需的依赖包。

  4. 构建项目: 运行命令 'npm run build' 构建 TypeScript 代码到 JavaScript。

  5. 安装 FFmpeg: FFmpeg MCP Server 依赖 FFmpeg 工具,请确保你的系统中已安装 FFmpeg。你可以参考 FFmpeg 官网 https://ffmpeg.org/ 的指引进行安装。并确保 'ffmpeg' 命令在你的系统 PATH 环境变量中可用,或者通过设置环境变量 'FFMPEG_PATH' 指定 FFmpeg 可执行文件的路径。

服务器配置

对于 MCP 客户端,你需要配置连接 FFmpeg MCP Server 的信息。以下是一个 JSON 格式的配置示例,你需要将其配置到你的 MCP 客户端中:

{
  "serverName": "ffmpeg-mcp",
  "command": "node",
  "args": [
    "cli.js"
  ],
  "transport": "stdio"
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义,例如 "ffmpeg-mcp"。
  • 'command': 启动服务器的命令,这里使用 'node' 命令来运行 'cli.js'。
  • 'args': 传递给启动命令的参数,这里指定运行 'cli.js' 文件。
  • 'transport': 传输协议,这里使用 'stdio' (标准输入输出) 协议。

请注意: 确保你的 MCP 客户端支持 'stdio' 传输协议,并按照客户端的指引配置上述 JSON 信息。

基本使用方法

  1. 启动服务器: 在仓库根目录下,运行命令 'npm start' 启动 FFmpeg MCP Server。服务器将通过 stdio 协议等待客户端连接和请求。

  2. 配置 MCP 客户端: 根据 "服务器配置" 章节的说明,配置你的 MCP 客户端连接到 FFmpeg MCP Server

  3. 调用工具: 在你的 LLM 应用中,通过 MCP 客户端向 FFmpeg MCP Server 发送工具调用请求,例如:

    • 加速视频: 调用 'speed_up' 工具,并提供 'input_file' (输入视频文件路径)、'speed_factor' (加速倍速) 等参数。
    • 提取音频: 调用 'extract_audio' 工具,并提供 'input_file' (输入视频文件路径) 参数。
  4. 接收响应: MCP 客户端将接收来自 FFmpeg MCP Server 的 JSON-RPC 响应,其中包含工具执行的结果,例如成功或失败信息、输出文件路径等。

示例 (LLM 应用侧,伪代码):

// 假设 client 是一个 MCP 客户端实例

// 调用 speed_up 工具
const speedUpResult = await client.callTool("ffmpeg-mcp", "speed_up", {
  input_file: "/path/to/input.mp4",
  speed_factor: 2
});

if (speedUpResult.isError) {
  console.error("视频加速失败:", speedUpResult.content);
} else {
  console.log("视频加速成功:", speedUpResult.content);
}

// 调用 extract_audio 工具
const extractAudioResult = await client.callTool("ffmpeg-mcp", "extract_audio", {
  input_file: "/path/to/input.mp4"
});

if (extractAudioResult.isError) {
  console.error("音频提取失败:", extractAudioResult.content);
} else {
  console.log("音频提取成功:", extractAudioResult.content);
}

请根据你的 MCP 客户端的具体使用方法,参考以上示例进行工具调用。

信息

分类

开发者工具