{"skill":{"slug":"mediaproc","displayName":"mediaproc","summary":"Process media files (video, audio, images) via a locked-down SSH container with ffmpeg, sox, and imagemagick. Use when the user wants to transcode video, pro...","description":"---\nname: mediaproc\ndescription: Process media files (video, audio, images) via a locked-down SSH container with ffmpeg, sox, and imagemagick. Use when the user wants to transcode video, process audio, manipulate images, or work with media files.\ncompatibility: Requires ssh and a running mediaproc instance. MEDIAPROC_HOST and MEDIAPROC_PORT env vars must be set.\nmetadata:\n  author: psyb0t\n  homepage: https://github.com/psyb0t/docker-mediaproc\n---\n\n# mediaproc\n\nLocked-down media processing over SSH. Built on [lockbox](https://github.com/psyb0t/docker-lockbox) — no shell access, no injection, no bullshit.\n\nFor installation and deployment, see [references/setup.md](references/setup.md).\n\n## SSH Wrapper\n\nUse `scripts/mediaproc.sh` for all commands. It handles host, port, and host key acceptance via `MEDIAPROC_HOST` and `MEDIAPROC_PORT` env vars.\n\n```bash\nscripts/mediaproc.sh <command> [args]\nscripts/mediaproc.sh <command> < input_file\nscripts/mediaproc.sh <command> > output_file\n```\n\n## Media Tools\n\n| Command    | Description                                  |\n| ---------- | -------------------------------------------- |\n| `ffmpeg`   | Video/audio encoding, transcoding, filtering |\n| `ffprobe`  | Media file analysis                          |\n| `sox`      | Audio processing                             |\n| `soxi`     | Audio file info                              |\n| `convert`  | Image conversion/manipulation (ImageMagick)  |\n| `identify` | Image file info (ImageMagick)                |\n| `magick`   | ImageMagick CLI                              |\n\n## Upload, Process, Download\n\n```bash\n# Upload\nscripts/mediaproc.sh \"put input.mp4\" < input.mp4\n\n# Transcode\nscripts/mediaproc.sh \"ffmpeg -i /work/input.mp4 -c:v libx264 /work/output.mp4\"\n\n# Download result\nscripts/mediaproc.sh \"get output.mp4\" > output.mp4\n\n# Clean up\nscripts/mediaproc.sh \"remove-file input.mp4\"\nscripts/mediaproc.sh \"remove-file output.mp4\"\n```\n\n## Video Operations\n\n```bash\n# Get video info as JSON\nscripts/mediaproc.sh \"ffprobe -v quiet -print_format json -show_format -show_streams /work/video.mp4\"\n\n# Apply frei0r glow effect\nscripts/mediaproc.sh \"ffmpeg -i /work/in.mp4 -vf frei0r=glow:0.5 /work/out.mp4\"\n\n# Extract audio from video\nscripts/mediaproc.sh \"ffmpeg -i /work/video.mp4 -vn -acodec libmp3lame /work/audio.mp3\"\n\n# Create thumbnail from video\nscripts/mediaproc.sh \"ffmpeg -i /work/video.mp4 -ss 00:00:05 -vframes 1 /work/thumb.jpg\"\n```\n\n## Audio Operations\n\n```bash\n# Convert audio format\nscripts/mediaproc.sh \"sox /work/input.wav /work/output.mp3\"\n\n# Get audio info\nscripts/mediaproc.sh \"soxi /work/audio.wav\"\n\n# Normalize audio\nscripts/mediaproc.sh \"sox /work/input.wav /work/output.wav norm\"\n```\n\n## Image Operations\n\n```bash\n# Resize image\nscripts/mediaproc.sh \"convert /work/input.png -resize 50% /work/output.png\"\n\n# Create thumbnail\nscripts/mediaproc.sh \"convert /work/input.jpg -thumbnail 200x200 /work/thumb.jpg\"\n\n# Get image info\nscripts/mediaproc.sh \"identify /work/image.png\"\n```\n\n## File Operations\n\nAll paths relative to the work directory. Traversal blocked.\n\n| Command                | Description                        |\n| ---------------------- | ---------------------------------- |\n| `put <path>`           | Upload file from stdin             |\n| `get <path>`           | Download file to stdout            |\n| `list-files [--json]`  | List directory                     |\n| `remove-file <path>`   | Delete a file                      |\n| `create-dir <path>`    | Create directory                   |\n| `remove-dir <path>`    | Remove empty directory             |\n| `remove-dir-recursive <path>` | Remove directory recursively |\n| `move-file <src> <dst>`| Move or rename                     |\n| `copy-file <src> <dst>`| Copy a file                        |\n| `file-info <path>`     | Get file metadata as JSON          |\n| `file-exists <path>`   | Check if file exists (true/false)  |\n| `file-hash <path>`     | Get SHA256 hash                    |\n| `disk-usage [path]`    | Get bytes used                     |\n| `search-files <glob>`  | Glob search                        |\n| `append-file <path>`   | Append stdin to a file             |\n\n```bash\n# List files\nscripts/mediaproc.sh \"list-files\"\n\n# List as JSON (size, modified, isDir, permissions)\nscripts/mediaproc.sh \"list-files --json\"\n\n# List subdirectory\nscripts/mediaproc.sh \"list-files project1\"\n\n# File operations\nscripts/mediaproc.sh \"create-dir project1\"\nscripts/mediaproc.sh \"move-file old.mp4 new.mp4\"\nscripts/mediaproc.sh \"copy-file input.mp4 backup.mp4\"\nscripts/mediaproc.sh \"file-info video.mp4\"\nscripts/mediaproc.sh \"file-exists video.mp4\"\nscripts/mediaproc.sh \"file-hash video.mp4\"\nscripts/mediaproc.sh \"search-files '*.mp4'\"\nscripts/mediaproc.sh \"disk-usage\"\nscripts/mediaproc.sh \"remove-dir-recursive project1\"\n```\n\n## Plugins\n\n- **frei0r** — Video effect plugins (used via `-vf frei0r=...`)\n- **LADSPA** — Audio effect plugins: SWH, TAP, CMT (used via `-af ladspa=...`)\n- **LV2** — Audio plugins (used via `-af lv2=...`)\n\n## Fonts\n\n2200+ fonts included covering emoji, CJK, Arabic, Thai, Indic, monospace, and more. Custom fonts can be mounted to `/usr/share/fonts/custom`.\n","tags":{"latest":"2.0.1"},"stats":{"comments":0,"downloads":1849,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":5},"createdAt":1770282587512,"updatedAt":1779076632466},"latestVersion":{"version":"2.0.1","createdAt":1774871569971,"changelog":"No user-visible changes in this version.  \n- Version bump only; no changes detected in skill documentation or files.","license":"MIT-0"},"metadata":null,"owner":{"handle":"psyb0t","userId":"s17fq93tmpky791n7516jcn08n83sfn2","displayName":"Ciprian Mandache","image":"https://avatars.githubusercontent.com/u/12934156?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779949715849}}