
Convert Video
Convert, trim, remux, speed-change, resize, rotate, or flip local videos with ffprobe and ffmpeg when the job is outside compress, GIF, social-share, or audio/frame extract skills.
Overview
convert-video is an agent skill most often used in Build (also Grow content and Launch distribution) that performs general FFmpeg video manipulation with user-confirmed ffprobe and ffmpeg commands.
Install
npx skills add https://github.com/gupsammy/claudest --skill convert-videoWhat is this skill?
- Maps user intent to FFmpeg operation patterns before running commands
- Probes codec with ffprobe for safe remux versus re-encode decisions
- Chains trim, resize, speed, rotate, and convert in one ffmpeg invocation
- Confirms with the user before executing shell ffmpeg/ffprobe
- Explicitly excludes compress-video, make-gif, share-social, extract-audio, and extract-frames scopes
Adoption & trust: 1 installs on skills.sh; 253 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
You have a local video that needs trim, remux, speed, or resize work but your agent keeps guessing ffmpeg flags or spawns wasteful intermediate files.
Who is it for?
Solo creators and devs with ffmpeg installed who need one-off convert/trim/speed/resize jobs outside specialized compress or GIF skills.
Skip if: Compression-only workflows, GIF creation, social platform export presets, or audio/frame extraction—those belong to sibling claudest media skills.
When should I use this skill?
User asks to convert this video, change format to mp4, trim, cut, speed up, slow motion, timelapse, resize, scale, rotate, flip, remux, or general FFmpeg manipulation not covered by compress-video, make-gif, share-social
What do I get? / Deliverables
You get a confirmed ffmpeg pipeline and a reported output file path and size, with multi-step filters applied in one run when possible.
- Converted or edited video file at a reported path
- Output file size summary after successful run
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Build is the canonical shelf because creators produce and reshape media assets for demos, docs, and product surfaces before distribution. Docs subphase covers tutorial reels, changelog clips, and README embeds that need format or trim operations without a full editorial pipeline skill.
Where it fits
Remux screen recordings to MP4 for README and docs embeds.
Trim and speed-ramp a talking-head clip for a weekly update post.
Rotate mobile footage and scale to 1080p before uploading to a launch trailer folder.
Produce a lightweight hero loop with chained resize and format conversion for the marketing page.
How it compares
Narrow FFmpeg workflow skill for general edits—not a browser-based editor or cloud transcoding SaaS.
Common Questions / FAQ
Who is convert-video for?
Indie builders and content-focused solos who drive video changes through Claude Code or similar agents with local ffmpeg access.
When should I use convert-video?
Use it during Build docs when preparing demo MP4s, in Grow content when normalizing clips for posts, and before Launch distribution when you need container or codec fixes without re-exporting from an NLE.
Is convert-video safe to install?
It allows shell ffmpeg and ffprobe on user files; review Security Audits on this Prism page and only confirm commands you understand before execution.
SKILL.md
READMESKILL.md - Convert Video
# Video Convert Identify the operation type first, then apply the matching pattern below. For multi-operation requests (e.g., trim + resize + convert), chain all filters in a single ffmpeg invocation — avoid intermediate files. ## Process 1. Identify the operation(s) from the user's request. 2. Probe codec when converting formats; probe dimensions when resizing. Speed, rotation, flip, and frame extraction do not require probing. 3. Construct the command using the appropriate pattern. 4. Confirm with the user before running. 5. Run and report output file path and size. ## Operation Patterns ### Format Conversion Probe codec first — determines whether `-c copy` is safe: ```bash ffprobe -v quiet -show_streams "$INPUT" | grep codec_name ``` ```bash # Remux: same codec, different container (e.g., H.264 MKV → MP4) — instant, lossless: ffmpeg -i input.mkv -c copy output.mp4 # Re-encode: different codec required: ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4 ``` ### Trimming ```bash # Fast trim without re-encoding (-ss before -i = container-level seek): ffmpeg -ss 00:01:30 -to 00:03:45 -i "$INPUT" -c copy "$OUTPUT" # Re-encoding trim (use when -c copy causes A/V sync issues near keyframes): ffmpeg -ss 00:01:30 -to 00:03:45 -i "$INPUT" -c:v libx264 -crf 23 -c:a copy "$OUTPUT" ``` Always try `-c copy` first. Fall back to re-encoding only if the user reports sync issues or the cut must land on a non-keyframe boundary. ### Speed Change ```bash # 2x speed: ffmpeg -i "$INPUT" -filter:v "setpts=0.5*PTS" -filter:a "atempo=2.0" "$OUTPUT" # 0.5x slow-motion: ffmpeg -i "$INPUT" -filter:v "setpts=2.0*PTS" -filter:a "atempo=0.5" "$OUTPUT" ``` `setpts` factor = `1 / speed_multiplier`. `atempo` range is 0.5–2.0 — chain for higher multiples: `atempo=2.0,atempo=2.0` achieves 4x. For silent video, omit `-filter:a` entirely. ### Resize / Scale Probe dimensions first: `ffprobe -v quiet -show_streams "$INPUT" | grep -E "width|height"` ```bash # Scale to width, auto height (-2 ensures H.264-compatible even height): ffmpeg -i "$INPUT" -vf "scale=1280:-2" -c:a copy "$OUTPUT" # Fit within bounding box without upscaling: ffmpeg -i "$INPUT" \ -vf "scale='min(1280,iw)':'min(720,ih)':force_original_aspect_ratio=decrease,pad=ceil(iw/2)*2:ceil(ih/2)*2" \ -c:a copy "$OUTPUT" ``` ### Rotation / Flip ```bash # 90° clockwise: ffmpeg -i "$INPUT" -vf "transpose=1" "$OUTPUT" # 90° counter-clockwise: ffmpeg -i "$INPUT" -vf "transpose=2" "$OUTPUT" # 180°: ffmpeg -i "$INPUT" -vf "transpose=1,transpose=1" "$OUTPUT" # Horizontal flip: ffmpeg -i "$INPUT" -vf "hflip" "$OUTPUT" # Vertical flip: ffmpeg -i "$INPUT" -vf "vflip" "$OUTPUT" ``` ### Frame Extraction ```bash # Single frame at timestamp: ffmpeg -ss 00:00:10 -i "$INPUT" -frames:v 1 -q:v 2 output.jpg # One frame every N seconds: ffmpeg -i "$INPUT" -vf "fps=1/$N" -q:v 2 frames/frame_%04d.jpg ``` `-q:v 2` is near-maximum JPEG quality. Use `-q:v 1` for the highest quality setting. ## Key Decisions - Never upscale — add `force_original_aspect_ratio=decrease` when fitting to a bounding box. - For multi-filter operations, chain with commas in a single `-vf`; but `-filter:v` and `-filter:a` must remain separate flags. - Use `-c:a copy` in all re-encode operations unless the audio format itself needs to change. - If ffprobe reveals a `rotate` metadata tag on the stream, use `-vf "transpose=..."` to bake rotation into pixels —