ffmpeg-cli

SKILL.md

FFmpeg CLI Reference

Contents

Dependencies

Verify ffmpeg is installed:

ffmpeg -version

Install if missing:

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Windows (scoop)
scoop install ffmpeg

Glossary of flags and filters

Filtering reference

Flag/Filter Purpose
-vf (also -filter:v) Video filter
-af (also -filter:a) Audio filter
-filter_complex Complex filter graph for multi-stream filtering
[0] All streams from first input (0-based)
[0:v] Video stream from first input
[1:a] Audio stream from second input
0:v:0 First input, first video stream
0:a:1 First input, second audio stream
[name] Named stream, used with -filter_complex
-map [name] Select stream for output
-y Auto-overwrite output files without confirmation

Expression evaluations: if, lte, gte and more.

Converting formats

Remux MP4 to MKV (no re-encoding):

ffmpeg -i input.mp4 -c copy output.mkv

MKV and MP4 are both containers for H264/H265 video and AAC/MP3 audio. Video quality is determined by the codec, not the container. MKV supports multiple video streams; MP4 has wider device support.

Remux MP4 to MOV:

ffmpeg -i input.mp4 -c copy output.mov

Encode MP4 to AVI (re-encodes):

ffmpeg -i input.mp4 output.avi

Resizing and padding

Upscale to 1080x1920, preserve aspect ratio, black padding:

ffmpeg -i input.mp4 -vf "scale=w=1080:h=1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black,setsar=1:1" output.mp4

scale options:

  • force_original_aspect_ratio=decrease - auto-decrease output dimensions to fit aspect ratio
  • force_original_aspect_ratio=increase - auto-increase dimensions
  • scale=w=1080:h=-1 - let ffmpeg pick correct height for aspect ratio
  • scale=w=1080:h=-2 - force dimensions divisible by 2

scale reference

pad options:

  • pad=width:height:x:y:color - x:y is top-left corner position
  • (ow-iw)/2:(oh-ih)/2 centres the video; negative values also centre
  • pad reference

setsar=1:1 ensures 1:1 pixel aspect ratio. Prevents ffmpeg from compensating for ratio changes. setsar reference

Two scaled outputs from one input (horizontal + vertical with logo overlay):

ffmpeg -i input.mp4 -i logo.png \
  -filter_complex "[0:v]split=2[s0][s1]; \
    [s0]scale=w=1920:h=1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:color=black,setsar=1:1[out1]; \
    [s1]scale=w=720:h=1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2:color=black,setsar=1:1[s2]; \
    [s2][1]overlay=(main_w-overlay_w)/2:(main_w-overlay_w)/5[out2]" \
  -map [out1] -map 0:a output_youtube.mp4 \
  -map [out2] -map 0:a output_shorts.mp4

Trim by time

ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:25 output.mp4

For faster but less accurate trimming, see the Input/output seeking section in references/encoding-and-settings.md. For the -c copy trade-offs when trimming, see references/core-concepts.md.

Verification and inspection

List supported formats:

ffmpeg -formats

List supported codecs:

ffmpeg -codecs

ffprobe

ffprobe provides structured metadata about media files.

Show detailed stream information:

ffprobe -show_streams -i input.mp4

Verify moov atom position (faststart):

ffprobe -v trace -i input.mp4

Look for type:'moov' near the beginning of output to confirm faststart is applied.

Reference files

Load these on demand with the Read tool when the task requires deeper coverage.

File Topics
references/core-concepts.md -c copy (remux vs transcode), input/output seeking, encoding quick ref (H264/H265/VP9 CRF ranges), GPU acceleration overview, format=yuv420p, -movflags +faststart
references/audio-processing.md Replace audio, extract audio, mix audio, combine MP3 tracks, crossfade, change audio format, merge and normalise
references/advanced-editing.md Playback speed, FPS change, jump cuts, video cropping for social, drawtext overlay, subtitles (burn/embed/extract), combine media (overlay, logo, background, concat intro/main/outro, vstack)
references/asset-generation.md Image to video, slideshow with fade, Ken Burns (zoompan), GIFs, video compilation with fades, thumbnails (single/multiple/scene), image thumbnails, storyboards (scene tile/keyframe/Nth frame)
references/encoding-and-settings.md Optimised daily command, H264 (libx264) deep-dive, H265 (libx265) Apple compat, VP9 (libvpx-vp9) constant quality, 1-pass vs 2-pass, -c copy detailed, seeking detailed, GPU detailed (Nvidia/Intel/AMD)
Weekly Installs
22
GitHub Stars
36
First Seen
Feb 13, 2026
Installed on
gemini-cli21
opencode21
github-copilot20
codex20
amp19
kimi-cli19