media-transcoding — Claude Code skill: FFmpeg video conversion
A skill for batch video transcoding with FFmpeg presets aimed at web, mobile and archive output. Useful when a media library needs one consistent format.
npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a claude-codeWhat media-transcoding does
The skill covers two scripts: a plain bash one, ffmpeg_convert.sh, and a more capable convert_video.py. The first checks your environment, converts a single file, and runs batch jobs. The second adds progress monitoring, metadata inspection, overwrite control, and preset listing.
Presets set resolution, CRF and audio bitrate. web_standard caps at 1080p with CRF 23 and 128k audio, web_high at 1080p with CRF 20 and 192k, mobile at 720p with CRF 25 and 96k, ultra_compact at 480p with CRF 28 and 64k, and archive keeps the original resolution with CRF 18 and 256k. Every preset encodes H.264 + AAC and adds +faststart so the MP4 streams without a full download.
Output lands in converted/ with a suffix like _web_standard, originals are copied to backup/, and the run is logged to conversion.log. FFmpeg has to be installed first — nothing runs without it, and on macOS you get it with brew install ffmpeg. If the script refuses to execute, chmod +x ffmpeg_convert.sh fixes that.
What it helps with
- transcode videos for web delivery with fast start playback
- shrink a large media library to mobile-friendly sizes
- standardise mixed files to one format and resolution
- keep an archival copy at high quality and original resolution
- verify the environment before running a batch job
Example prompts for the agent
- run ./ffmpeg_convert.sh check and tell me what is missing
- convert My Video.mp4 using the web_standard preset
- run batch_mobile over the whole folder and show me the output sizes
How to install media-transcoding
1Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a claude-code2Manually: put the files in place
~/.claude/skills/media-transcoding/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/media-transcoding/
1Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a codex2Manually: put the files in place
.agents/skills/media-transcoding/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a cursor2Manually: put the files in place
.cursor/skills/media-transcoding/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install bobmatnyc/claude-mpm-skills media-transcoding2Manually: put the files in place
.github/skills/media-transcoding/SKILL.md1Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a gemini-cli2Platform CLI
gemini skills install https://github.com/bobmatnyc/claude-mpm-skills --path toolchains/universal/infrastructure/media-transcodingManually: put the files in place
.devin/skills/media-transcoding/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about media-transcoding
How do I install media-transcoding in Claude?
Run npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a claude-code. The skill file then sits at ~/.claude/skills/media-transcoding/SKILL.md.
What does media-transcoding do?
It documents FFmpeg transcoding workflows driven by presets for web, mobile and archive output, with batch runs, backups and logging.
What do I need before using it?
FFmpeg installed on the machine — conversion will not start without it. On macOS, brew install ffmpeg handles that.
Source text
SKILL.md · MIT
---
name: media-transcoding
description: FFmpeg-based media transcoding workflows with preset-driven conversions, batch processing, and safe backups for web/mobile/archive outputs.
user-invocable: false
disable-model-invocation: true
version: 1.0.0
category: toolchain
author: Claude MPM Team
license: MIT
progressive_disclosure:
entry_point:
summary: "Use FFmpeg presets to convert videos for web/mobile/archive with batch scripts, backups, and faststart MP4s."
when_to_use: "Optimizing video files for web delivery, compressing large media libraries, or standardizing outputs with repeatable presets."
quick_start: "1. Run ./ffmpeg_convert.sh check 2. Convert one file with web_standard 3. Batch convert with batch_web_standard"
tags:
- ffmpeg
- media
- video
- transcoding
- encoding
---
# Media Transcoding (FFmpeg)
## Overview
Use FFmpeg presets to normalize video outputs for web streaming, mobile delivery, or archival quality. Your `hf-videos` repo already includes a simple bash script and a more advanced Python script with presets, backups, and logging.
## Quick Start (hf-videos)
```bash
./ffmpeg_convert.sh check
./ffmpeg_convert.sh web_standard "My Video.mp4"
./ffmpeg_convert.sh batch_web_standard
```
Outputs are written to `converted/` with backups in `backup/` and logs in `conversion.log`.
## Preset Summary (hf-videos)
- **web_standard**: 1080p max, CRF 23, 128k audio, `+faststart`
- **web_high**: 1080p max, CRF 20, 192k audio
- **mobile**: 720p max, CRF 25, 96k audio
- **ultra_compact**: 480p max, CRF 28, 64k audio
- **archive**: original res, CRF 18, 256k audio
All presets use H.264 + AAC with `+faststart` for streaming-friendly MP4s.
## Batch Workflow
1. Run a single-file conversion first to validate output.
2. Run batch conversion once the preset is confirmed.
3. Verify output sizes and playback.
Batch commands:
```bash
./ffmpeg_convert.sh batch_web_standard
./ffmpeg_convert.sh batch_mobile
./ffmpeg_convert.sh batch_ultra_compact
```
## Advanced Script (convert_video.py)
Use `convert_video.py` when you need:
- Progress monitoring
- Metadata inspection
- Overwrite control
- Preset listing and batch automation
```bash
python3 convert_video.py --list-presets
python3 convert_video.py --file "My Video.mp4" --preset web_standard
python3 convert_video.py --preset mobile --overwrite
```
## Output Conventions
- Converted files use suffixes like `_web_standard`.
- Backups preserve original filenames.
- Logs go to `conversion.log` for audit and troubleshooting.
## Troubleshooting
- **FFmpeg missing**: `brew install ffmpeg` (macOS) or install from ffmpeg.org.
- **Permission errors**: `chmod +x ffmpeg_convert.sh`.
- **Disk pressure**: clean `converted/` and `backup/` after validation.
## Related Skills
- `toolchains/universal/infrastructure/docker`
© Claude MPM Team · MIT · bobmatnyc/claude-mpm-skills