Skip to content
Back to skills

Ffmpeg

ASecurity

Process audio and video with the `ffmpeg` / `ffprobe` CLIs — convert, trim, extract audio, resize, change format, make GIFs, inspect media. Use for any audio/video transformation.

  • 17 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 4, 2026
toolsgoshell

Works with

  • cli

Security analysis

A100/100

Scanned October 3, 2026

npx -y skills add gabrielmoreira/agent-skills-mirror --skill ffmpeg --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ffmpeg?

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

Security grade badge for Ffmpeg
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gabrielmoreira-ffmpeg/badge)](https://www.skillsdirectory.com/skills/gabrielmoreira-ffmpeg)

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

Download with Pro
SKILL.md
---
name: ffmpeg
description: Process audio and video with the `ffmpeg` / `ffprobe` CLIs — convert, trim, extract audio, resize, change format, make GIFs, inspect media. Use for any audio/video transformation.
version: 1.0.0
requires_tools:
  - os.shell.run
dangerous: false
platforms:
  - darwin
  - linux
  - win32
---

# ffmpeg

Transform audio and video files with [`ffmpeg`](https://ffmpeg.org/) and inspect
them with `ffprobe`. Operations are non-destructive: always write to a new
output file. Re-encoding can be slow on long media — set realistic expectations.

## Setup health check (run first, every session)

Verify with **one solo step**:

```
[{ "tool": "os.shell.run", "args": { "cmd": "ffmpeg", "args": ["-version"] } }]
```

Outcome map:
- `exit 0` + version → ready, proceed.
- `command not found: ffmpeg` → enter **Setup playbook → "ffmpeg missing"**.

## Setup playbook (when prerequisites are missing)

### ffmpeg missing

Reply (solo `reply` step):

> "`ffmpeg` is not installed. I can install it: `brew install ffmpeg`. Install it?"

On yes:

```
[{ "tool": "os.shell.run", "args": { "cmd": "brew", "args": ["install", "ffmpeg"] } }]
```

On Linux: `apt-get install ffmpeg`.

On Windows, offer this exact winget command after confirmation:

```
[{ "tool": "os.shell.run", "args": { "cmd": "winget", "args": ["install", "--id", "Gyan.FFmpeg", "-e"] } }]
```

## When to use

- "Convert this video/audio to <format>", "extract the audio from this mp4".
- "Trim from 0:30 to 1:00", "resize to 720p", "make a GIF from this clip".
- "What codec / duration / resolution is this file?" (use `ffprobe`).

## When NOT to use

- Downloading media from URLs — that's `yt-dlp` territory (separate skill).
- Still-image editing — use the `imagemagick` skill.
- Lossless container-only edits where a remux suffices — still fine here, just
  use `-c copy` to avoid re-encoding.

## Common operations

All examples invoke `os.shell.run`. Inspect first with `ffprobe`; the approval
gate surfaces each write. Use `-c copy` to remux without re-encoding when only
the container changes.

| Goal | cmd / args |
|---|---|
| Inspect media | `ffprobe` `["-hide_banner", "in.mp4"]` |
| Convert MOV → MP4 | `ffmpeg` `["-i", "in.mov", "-c:v", "libx264", "-c:a", "aac", "out.mp4"]` |
| Extract audio (MP3) | `ffmpeg` `["-i", "in.mp4", "-vn", "-q:a", "2", "out.mp3"]` |
| Trim (start 30s, 30s long) | `ffmpeg` `["-ss", "00:00:30", "-i", "in.mp4", "-t", "30", "-c", "copy", "clip.mp4"]` |
| Resize to 720p | `ffmpeg` `["-i", "in.mp4", "-vf", "scale=-2:720", "out_720p.mp4"]` |
| Video → GIF | `ffmpeg` `["-i", "in.mp4", "-vf", "fps=12,scale=480:-1", "out.gif"]` |
| Extract one frame | `ffmpeg` `["-ss", "00:00:05", "-i", "in.mp4", "-frames:v", "1", "frame.png"]` |
| Remux only (fast) | `ffmpeg` `["-i", "in.mkv", "-c", "copy", "out.mp4"]` |

## Rules

1. Always write to a NEW output path; never overwrite the source.
2. Inspect with `ffprobe` first when unsure of codecs/duration/resolution.
3. Warn the user that long re-encodes can take a while; prefer `-c copy` when
   only the container changes.
4. Echo the output path (and `ffprobe` duration if relevant) after each run.

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…