项目简介
本项目是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在将强大的媒体处理工具 Shaka Packager 集成到支持 MCP 协议的 LLM 客户端 (如 Claude Desktop) 中。通过本服务器,LLM 可以安全、便捷地调用 Shaka Packager 的功能,实现视频分析、格式转换、流媒体打包 (HLS/DASH) 等复杂任务,极大地扩展了 LLM 在媒体处理领域的应用能力。
主要功能点
- 视频分析: 提取视频文件的详细流信息,包括编解码器、比特率等,帮助用户了解视频文件的技术 характеристика.
- 媒体打包: 将视频文件转换为流媒体格式 (HLS 和 DASH),支持点播 (VOD) 和直播 (Live) 场景,方便用户进行视频内容的分发和播放。
- 高级选项: 支持 DRM 加密 (Widevine, PlayReady, FairPlay) 以保护视频内容版权,支持广告插入标记配置,以及 MP4, TS 等多种格式之间的转换,满足用户多样化的媒体处理需求。
- 智能路径处理: 自动处理 Docker 容器和宿主机之间的路径转换问题,简化部署和配置流程。
- 强大的错误管理: 提供详细的错误分析和问题解决建议,帮助用户快速定位和解决媒体处理过程中遇到的问题。
- 命令辅助: 协助用户生成正确的 Shaka Packager 命令,降低使用门槛,提升操作效率。
- 交互式文档: 内置详细的帮助文档和使用示例,引导用户完成复杂的媒体处理操作。
- 详尽的输出: 为所有操作提供全面的结果摘要和执行细节,方便用户了解处理结果。
安装步骤
本服务器推荐从源代码安装,步骤如下:
- 安装 Python 3.10 或更高版本。
- 安装 Shaka Packager。请根据 Shaka Packager 官方文档 下载预编译版本或从源码构建,并确保 'packager' 命令在您的系统 PATH 环境变量中可用。或者,您可以在服务器配置中指定 Shaka Packager 的绝对路径。
- 克隆仓库:
git clone https://github.com/coderjun/shaka-packager-mcp.git cd shaka-packager-mcp - 安装 Python 包:
或者使用 'uv' (如果已安装):pip install -e .uv pip install -e .
服务器配置
要将 Shaka Packager MCP 服务器与 MCP 客户端 (例如 Claude Desktop) 集成,您需要在客户端的配置文件中添加服务器的配置信息。以下是一个配置示例,您需要根据您的实际环境进行调整。
假设您的 Claude Desktop 配置文件为 'claude_desktop_config.json',您需要添加如下 'shaka-packager' 服务器配置到 'mcpServers' 字段中。
{ "mcpServers": { "shaka-packager": { "command": "/ABSOLUTE/PATH/TO/uv", // MCP 服务器的启动命令,这里假设使用 uv 运行 Python 脚本,请替换为您的 uv 或 python3 可执行文件的绝对路径 "args": [ "run", "--with", "mcp[cli]", // 确保 mcp 库及其命令行工具可用 "/ABSOLUTE/PATH/TO/shaka_packager_mcp.py" // MCP 服务器 Python 脚本的绝对路径,请替换为您克隆仓库后 shaka_packager_mcp.py 文件的绝对路径 ], "env": { "VIDEO_PATH": "/PATH/TO/VIDEOS/DIRECTORY", // 本地视频文件存放目录的绝对路径,用于路径转换,请替换为您存放视频文件的目录 "SHAKA_PACKAGER_PATH": "/PATH/TO/PACKAGER" // Shaka Packager 可执行文件的绝对路径,如果 packager 已在 PATH 中,则可以省略此配置 } } } }
配置参数说明:
- 'server name: shaka-packager': 服务器名称,在 Claude Desktop 中引用时使用。
- 'command': 启动 MCP 服务器的命令,通常是 Python 解释器或 uv 等工具。
- 'args': 传递给启动命令的参数列表。
- '"run"': uv 的 run 命令,用于运行 Python 脚本。
- '"--with"': uv 的参数,用于指定运行环境,'mcp[cli]' 表示需要包含 mcp 库及其命令行工具的环境。
- '"/ABSOLUTE/PATH/TO/shaka_packager_mcp.py"': MCP 服务器 Python 脚本的绝对路径。
- 'env': 设置 MCP 服务器运行时的环境变量。
- 'VIDEO_PATH': 重要参数。指定宿主机上存放视频文件的目录的绝对路径。服务器会将 Docker 容器内的 '/projects/video-drop' 路径映射到此目录,实现路径转换。
- 'SHAKA_PACKAGER_PATH': 重要参数。指定 Shaka Packager 可执行文件的绝对路径。如果 'packager' 命令已添加到系统的 PATH 环境变量,则可以省略此配置。
重要提示:
- 请务必使用绝对路径配置 'command', 'args' 中的脚本路径,以及 'env' 中的 'VIDEO_PATH' 和 'SHAKA_PACKAGER_PATH'。
- 如果您使用 Docker 部署 Filesystem MCP Server,请确保 Filesystem MCP Server 的配置也已添加到 'claude_desktop_config.json' 中,以便 Claude Desktop 可以同时访问文件系统和 Shaka Packager MCP 服务器。
基本使用方法
成功配置并启动 Shaka Packager MCP 服务器后,您可以在支持 MCP 协议的客户端 (如 Claude Desktop) 中使用以下步骤进行视频处理:
-
连接 Filesystem MCP Server (如果需要): 如果您的视频文件存储在本地文件系统中,您需要先配置并连接 Filesystem MCP Server,以便 Claude 可以访问您的视频文件。
-
列出视频文件: 在 Claude 中,您可以要求列出指定目录下的文件,例如 "Please show me the files in my Videos directory"。
-
选择视频文件: 浏览文件列表,找到您要处理的视频文件。复制该文件的 'file://' URI 路径。
-
使用 Shaka Packager 工具: 根据您的需求,使用以下工具和提示词来调用 Shaka Packager MCP 服务器的功能:
- 分析视频: 使用 'analyze_video' 工具分析视频文件,例如 "Please analyze this video: file:///path/to/your/video.mp4" 或直接使用本地路径 "/path/to/your/video.mp4"。
- 运行 Shaka Packager 命令: 使用 'run_shaka_packager' 工具运行自定义的 Shaka Packager 命令,例如 "Please package this video for HLS: file:///path/to/your/video.mp4"。 您可以使用预定义的 Prompt 模板 (如 'vod_hls_dash_prompt') 或自定义命令参数。
- 获取 Shaka Packager 文档: 使用 'get_shaka_documentation' 工具获取 Shaka Packager 的详细文档和使用示例。
- 获取 Shaka Packager 选项: 使用 'get_shaka_options' 工具获取 Shaka Packager 的可用选项和版本信息。
示例对话:
用户: Please analyze this video: /Users/username/Videos/my_video.mp4 Claude: (调用 analyze_video 工具,返回视频分析结果) 用户: Please package this video for HLS and DASH streaming: /Users/username/Videos/my_video.mp4 Claude: (调用 run_shaka_packager 工具,使用 vod_hls_dash_prompt 模板,返回打包结果) 用户: Help me understand the error message: Unknown field in stream descriptor Claude: (调用 error_interpretation_prompt 模板,根据错误信息提供解释和建议)
通过上述步骤,您可以利用 Shaka Packager MCP 服务器,在 LLM 客户端中便捷地完成各种复杂的视频处理任务。
信息
分类
AI与计算