名称: mediaproc
描述: 通过一个受限制的 SSH 容器处理媒体文件(视频、音频、图像),容器内包含 ffmpeg、sox 和 imagemagick。当用户需要转码视频、处理音频、操作图像或处理媒体文件时使用。
compatibility: 需要 SSH 和一个正在运行的 mediaproc 实例。必须设置 MEDIAPROC_HOST 和 MEDIAPROC_PORT 环境变量。
元数据:
author: psyb0t
homepage: https://github.com/psyb0t/docker-mediaproc
通过 SSH 进行受限制的媒体处理。基于 lockbox 构建 —— 无 shell 访问、无注入、无废话。
关于安装和部署,请参阅 references/setup.md。
所有命令都使用 scripts/mediaproc.sh。它通过 MEDIAPROC_HOST 和 MEDIAPROC_PORT 环境变量处理主机、端口和主机密钥接受。
scripts/mediaproc.sh <命令> [参数]
scripts/mediaproc.sh <命令> < 输入文件
scripts/mediaproc.sh <命令> > 输出文件
| 命令 | 描述 |
|---|---|
ffmpeg |
视频/音频编码、转码、滤镜处理 |
ffprobe |
媒体文件分析 |
sox |
音频处理 |
soxi |
音频文件信息 |
convert |
图像转换/处理 (ImageMagick) |
identify |
图像文件信息 (ImageMagick) |
magick |
ImageMagick 命令行界面 |
# 上传
scripts/mediaproc.sh "put input.mp4" < input.mp4
# 转码
scripts/mediaproc.sh "ffmpeg -i /work/input.mp4 -c:v libx264 /work/output.mp4"
# 下载结果
scripts/mediaproc.sh "get output.mp4" > output.mp4
# 清理
scripts/mediaproc.sh "remove-file input.mp4"
scripts/mediaproc.sh "remove-file output.mp4"
# 获取视频信息(JSON格式)
scripts/mediaproc.sh "ffprobe -v quiet -print_format json -show_format -show_streams /work/video.mp4"
# 应用 frei0r 发光效果
scripts/mediaproc.sh "ffmpeg -i /work/in.mp4 -vf frei0r=glow:0.5 /work/out.mp4"
# 从视频中提取音频
scripts/mediaproc.sh "ffmpeg -i /work/video.mp4 -vn -acodec libmp3lame /work/audio.mp3"
# 从视频创建缩略图
scripts/mediaproc.sh "ffmpeg -i /work/video.mp4 -ss 00:00:05 -vframes 1 /work/thumb.jpg"
# 转换音频格式
scripts/mediaproc.sh "sox /work/input.wav /work/output.mp3"
# 获取音频信息
scripts/mediaproc.sh "soxi /work/audio.wav"
# 音频标准化
scripts/mediaproc.sh "sox /work/input.wav /work/output.wav norm"
# 调整图像大小
scripts/mediaproc.sh "convert /work/input.png -resize 50% /work/output.png"
# 创建缩略图
scripts/mediaproc.sh "convert /work/input.jpg -thumbnail 200x200 /work/thumb.jpg"
# 获取图像信息
scripts/mediaproc.sh "identify /work/image.png"
所有路径均相对于工作目录。禁止路径遍历。
| 命令 | 描述 |
|---|---|
put <路径> |
从标准输入上传文件 |
get <路径> |
下载文件到标准输出 |
list-files [--json] |
列出目录内容 |
remove-file <路径> |
删除文件 |
create-dir <路径> |
创建目录 |
remove-dir <路径> |
删除空目录 |
remove-dir-recursive <路径> |
递归删除目录 |
move-file <源> <目标> |
移动或重命名文件 |
copy-file <源> <目标> |
复制文件 |
file-info <路径> |
获取文件元数据(JSON格式) |
file-exists <路径> |
检查文件是否存在(true/false) |
file-hash <路径> |
获取 SHA256 哈希值 |
disk-usage [路径] |
获取已用字节数 |
search-files <通配符> |
通配符搜索文件 |
append-file <路径> |
将标准输入追加到文件 |
# 列出文件
scripts/mediaproc.sh "list-files"
# 以 JSON 格式列出(包含大小、修改时间、是否为目录、权限)
scripts/mediaproc.sh "list-files --json"
# 列出子目录
scripts/mediaproc.sh "list-files project1"
# 文件操作示例
scripts/mediaproc.sh "create-dir project1"
scripts/mediaproc.sh "move-file old.mp4 new.mp4"
scripts/mediaproc.sh "copy-file input.mp4 backup.mp4"
scripts/mediaproc.sh "file-info video.mp4"
scripts/mediaproc.sh "file-exists video.mp4"
scripts/mediaproc.sh "file-hash video.mp4"
scripts/mediaproc.sh "search-files '*.mp4'"
scripts/mediaproc.sh "disk-usage"
scripts/mediaproc.sh "remove-dir-recursive project1"
-vf frei0r=... 使用)-af ladspa=... 使用)-af lv2=... 使用)包含 2200 多种字体,涵盖表情符号、中日韩文字、阿拉伯文、泰文、印度文字、等宽字体等。自定义字体可以挂载到 /usr/share/fonts/custom。