使用说明
FFmpeg MCP音频处理服务器
一个安全的容器化MCP(模型上下文协议)服务器,为AI助手提供任何FFmpeg。使用一致的输出格式处理整个音频文件目录,同时通过Docker沙盒维护安全性。
特性
- 通用音频格式支持:处理40多种音频格式,包括WAV、MP3、FLAC、OGG、M4A等
- 标准化输出:所有文件转换为48kHz、32位WAV格式,保留通道计数
- 批处理:通过进度跟踪和详细报告处理整个目录
- 安全第一:
- 所有FFmpeg命令都在沙盒Docker容器中运行
- 处理过程中禁用网络访问
- 全面的指挥净化
- 文件大小限制(默认7GB)
- 智能处理:
- 自动音频元数据提取
- 通道计数保存
- 带时间戳的输出目录可防止覆盖
- 超时保护(每个文件5分钟)
- MCP集成:与支持模型上下文协议的AI助手无缝集成
它的用途
此工具专为音频专业人员、声音设计师和开发人员设计,他们需要:
- 对大型音频库应用一致的处理
- 在保持质量的同时转换音频格式
- 在批处理操作中安全地应用FFmpeg过滤器和效果
- 将音频处理集成到AI驱动的工作流程中
- 确保可复制、标准化的输出格式
需求
系统要求
- python:3.7或更高
- 码头工人:已安装并正在运行
- MCP框架:
pip install mcp - 存储:足够的音频文件空间(每个文件最多支持7GB)
自动设置
服务器自动执行以下操作:
- 检查启动时的所有依赖关系
- 如果不存在,则提取FFmpeg Docker映像
- 在处理之前验证系统准备就绪
安装
-
克隆或下载此存储库
-
安装Python依赖项:
pip install mcp -
确保Docker已安装并正在运行:
docker --version docker ps -
运行服务器:
python ffmpeg_server.py
用法
作为MCP服务器
服务器为AI助手提供了三个主要工具:
1. any_ffmpeg_command
使用自定义FFmpeg命令处理音频文件:
{
"directory": "/path/to/audio/files",
"command_template": ["-i", "{input}", "-af", "loudnorm", "{output}"],
"file_extensions": ["wav", "mp3"], # Optional: defaults to all audio formats
"output_subdir": "processed", # Optional: defaults to "output"
"max_file_size_mb": 7000 # Optional: defaults to 7000 (7GB)
}
2. get_audio_processing_info
获取有关服务器功能的信息:
- 支持的音频格式
- 可用的FFmpeg标志
- 命令模板示例
- 当前Docker状态
3. check_system_dependencies
验证是否满足所有系统依赖关系:
- Python版本
- Docker可用性
- FFmpeg图像状态
- MCP框架
FFmpeg命令示例
服务器包括几个示例模板:
# Simple format conversion
["-i", "{input}", "{output}"]
# Audio normalization
["-i", "{input}", "-af", "loudnorm", "{output}"]
# Trim audio (10s to 30s)
["-i", "{input}", "-ss", "10", "-t", "20", "{output}"]
# Apply reverb effect
["-i", "{input}", "-af", "aecho=0.8:0.9:1000:0.3", "{output}"]
# Normalize and compress
["-i", "{input}", "-af", "loudnorm,acompressor=threshold=-20dB:ratio=4:attack=5:release=50", "{output}"]
输出结构
已处理的文件保存在带时间戳的目录中:
input_directory/
├── audio1.mp3
├── audio2.flac
├── processed_20250103_143052/
│ ├── audio1_processed.wav
│ └── audio2_processed.wav
└── processed_20250103_151230/
└── audio1_processed.wav
安全功能
- 沙盒执行:所有FFmpeg命令都在Docker容器中运行,没有网络访问权限
- 命令消毒:基于白名单的FFmpeg标志和参数验证
- 外壳注射保护:全面检查恶意字符
- 资源限制:文件大小限制和处理超时
- 用户隔离:容器以无特权用户身份运行
高级配置
自定义文件大小限制
调整 max_file_size_mb 参数(默认值:7000 MB)
处理超时
当前设置为每个文件5分钟(硬编码)
支持的FFmpeg标志
服务器支持全面的音频处理标志白名单,包括:
- 音频编解码器和格式
- 质量和比特率设置
- 过滤器和效果
- 元数据处理
- 基于时间的操作
故障排除
常见问题
-
“Docker不可用”
- 确保Docker桌面正在运行
- 检查Docker守护进程:
docker ps
-
“未找到FFmpeg Docker映像”
- 服务器将自动提取图像
- 手动拉动:
docker pull jrottenberg/ffmpeg
-
“缺少Python依赖项”
- 安装MCP:
pip install mcp
- 安装MCP:
-
处理超时
- 检查文件大小和复杂性
- 如果需要,简化FFmpeg过滤器
调试模式
使用Python的verbose标志运行以获得详细输出:
python -v ffmpeg_mcp_server.py
贡献
欢迎投稿!请确保:
- 代码遵循现有样式模式
- 安全措施得到维护
- 测试通过(如适用)
- 文档已更新
致谢
- 基于MCP(模型上下文协议)框架构建
- 使用优秀
jrottenberg/ffmpegDocker镜像 - 专为与AI助手和音频处理工作流程集成而设计
支持
对于问题、疑问或贡献:
- 在存储库上打开问题
- 检查现有文档
- 确保满足系统要求
备注:此工具仅处理音频文件。视频流被忽略,所有输出都标准化为48kHz、32位WAV格式,保留了原始通道计数。
内置于🩷 通过LUFS音频
