核心用法
mediaproc 是一个基于 Docker 的锁定式媒体处理服务,通过 SSH 协议暴露 ffmpeg、ffprobe、sox、ImageMagick 等专业媒体工具。用户通过 mediaproc.sh 包装脚本与容器交互,支持上传→处理→下载的完整工作流。
典型工作流程:
1. 上传:scripts/mediaproc.sh "put input.mp4" < input.mp4
2. 处理:scripts/mediaproc.sh "ffmpeg -i /work/input.mp4 -c:v libx264 /work/output.mp4"
3. 下载:scripts/mediaproc.sh "get output.mp4" > output.mp4
4. 清理:scripts/mediaproc.sh "remove-file output.mp4"
核心能力覆盖:
- 视频:转码(H.264/H.265等)、格式转换、滤镜特效(frei0r)、抽帧缩略图、音轨提取
- 音频:格式转换、音量归一化、LADSPA/LV2 插件效果
- 图像:缩放、裁剪、格式转换、缩略图生成
- 文件管理:隔离的
/work目录操作,禁止路径遍历
显著优点
| 维度 | 优势 |
|------|------|
| **安全架构** | 基于 lockbox 的受限 SSH,无shell访问,命令白名单机制,路径隔离 |
| **工具完整性** | 预装 ffmpeg、sox、ImageMagick 及 2200+ 字体,开箱即用 |
| **插件生态** | 内置 frei0r 视频特效、SWH/TAP/CMT LADSPA 音频插件、LV2 支持 |
| **传输便捷** | stdin/stdout 流式传输,无需额外配置 SFTP |
潜在缺点与局限性
1. 部署复杂度:需自建 Docker 容器并配置 MEDIAPROC_HOST/MEDIAPROC_PORT 环境变量,无托管服务
2. 无持久化设计:工作目录为临时存储,需显式管理文件生命周期
3. SSH 密钥管理:需手动处理 host key 接受流程
4. 批量处理能力弱:无内置队列或并发控制,依赖外部脚本编排
5. 网络依赖:大文件传输受 SSH 带宽和延迟限制
适合人群
- 需要隔离环境处理不可信媒体文件的开发者/DevOps
- 追求确定性工具链版本的技术团队(避免本地 ffmpeg 版本碎片化)
- 需要自动化媒体处理流水线的 CI/CD 场景
- 对安全性敏感、要求命令注入防护的企业环境
常规风险
| 风险类别 | 说明 | 缓解措施 |
|----------|------|----------|
| 资源耗尽 | 恶意构造的媒体文件可能触发 ffmpeg 极端内存/CPU 占用 | 容器配置资源限制(CPU/memory limits) |
| DoS 攻击 | 超大文件上传或复杂滤镜链导致处理阻塞 | 前置文件大小校验、超时机制 |
| 信息泄露 | ffprobe 可能暴露敏感元数据 | 处理前脱敏、输出目录权限控制 |
| 供应链风险 | Docker 镜像或插件来源未经验证 | 镜像签名验证、最小化基础镜像 |
> 注意:认证报告显示为占位文本,未执行实际安全扫描,生产环境建议进行独立渗透测试。