Skip to content
Back to skills

003 Name Skill 4ab99fb7

ASecurity

This skill should be used when the user asks to "convert this video", "change format to mp4", "trim from X to Y", "cut the first X seconds", "speed up this video", "slow motion", "timelapse", "extract frames", "resize video", "scale down", "rotate video", "flip video", "remux", or any general FFmpeg video manipulation not covered by compress-video, make-gif, share-social, or extract-audio.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
content-marketingbash

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 003-name-skill_4ab99fb7 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 003 Name Skill 4ab99fb7?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 003 Name Skill 4ab99fb7
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-003-name-skill-4ab99fb7/badge)](https://www.skillsdirectory.com/skills/tools-only-003-name-skill-4ab99fb7)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: convert-video
description: >
  This skill should be used when the user asks to "convert this video",
  "change format to mp4", "trim from X to Y", "cut the first X seconds",
  "speed up this video", "slow motion", "timelapse", "extract frames",
  "resize video", "scale down", "rotate video", "flip video", "remux",
  or any general FFmpeg video manipulation not covered by compress-video,
  make-gif, share-social, or extract-audio.
allowed-tools:
  - Bash(ffprobe:*)
  - Bash(ffmpeg:*)
  - AskUserQuestion
---

# 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 — `-c copy` preserves the metadata flag without rotating the actual frame data, which confuses many players.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.