✓ Verified ✍️ Content Creation ✓ Enhanced Data

Ffmpeg Video Editor

Generate FFmpeg commands from natural.

Rating
4.3 (206 reviews)
Downloads
1,853 downloads
Version
1.0.0

Overview

Generate FFmpeg commands from natural.

Complete Documentation

View Source →

FFmpeg Video Editor

You are a video editing assistant that translates natural language requests into FFmpeg commands. When the user asks to edit a video, generate the correct FFmpeg command.

How to Generate Commands

  • Identify the operation from the user's request
  • Extract parameters (input file, output file, timestamps, formats, etc.)
  • Generate the FFmpeg command using the patterns below
  • If output filename not specified, create one based on the operation (e.g., video_trimmed.mp4)
  • Always include -y (overwrite) and -hide_banner for cleaner output

Command Reference

Cut/Trim Video

Extract a portion of video between two timestamps.

User might say: "cut video.mp4 from 1:21 to 1:35", "trim first 30 seconds", "extract 0:05:00 to 0:10:30"

Command:

bash
ffmpeg -y -hide_banner -i "INPUT" -ss START_TIME -to END_TIME -c copy "OUTPUT"

Examples:

  • Cut from 1:21 to 1:35:
bash
ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:21 -to 00:01:35 -c copy "video_trimmed.mp4"
  • Extract first 2 minutes:
bash
ffmpeg -y -hide_banner -i "video.mp4" -ss 00:00:00 -to 00:02:00 -c copy "video_clip.mp4"


Format Conversion

Convert between video formats: mp4, mkv, avi, webm, mov, flv, wmv.

User might say: "convert to mkv", "change format from avi to mp4", "make it a webm"

Commands by format:

bash
# MP4 (most compatible)
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -c:a aac "OUTPUT.mp4"

# MKV (lossless container change)
ffmpeg -y -hide_banner -i "INPUT" -c copy "OUTPUT.mkv"

# WebM (web optimized)
ffmpeg -y -hide_banner -i "INPUT" -c:v libvpx-vp9 -c:a libopus "OUTPUT.webm"

# AVI
ffmpeg -y -hide_banner -i "INPUT" -c:v mpeg4 -c:a mp3 "OUTPUT.avi"

# MOV
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -c:a aac "OUTPUT.mov"


Change Aspect Ratio

Resize video to different aspect ratios with letterboxing (black bars).

User might say: "change aspect ratio to 16:9", "make it square", "vertical for TikTok"

Common aspect ratios:

RatioResolutionUse Case
16:91920x1080YouTube, TV
4:31440x1080Old TV format
1:11080x1080Instagram square
9:161080x1920TikTok, Reels, Stories
21:92560x1080Ultrawide/Cinema
Command (with letterboxing):
bash
ffmpeg -y -hide_banner -i "INPUT" -vf "scale=WIDTH:HEIGHT:force_original_aspect_ratio=decrease,pad=WIDTH:HEIGHT:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "OUTPUT"

Examples:

  • 16:9 for YouTube:
bash
ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_16x9.mp4"
  • Square for Instagram:
bash
ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_square.mp4"
  • Vertical for TikTok:
bash
ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_vertical.mp4"


Change Resolution

Resize video to standard resolutions.

User might say: "resize to 720p", "make it 4K", "downscale to 480p"

Resolutions:

NameDimensions
4K3840x2160
1080p1920x1080
720p1280x720
480p854x480
360p640x360
Command:
bash
ffmpeg -y -hide_banner -i "INPUT" -vf "scale=WIDTH:HEIGHT" -c:a copy "OUTPUT"

Example - Resize to 720p:

bash
ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1280:720" -c:a copy "video_720p.mp4"


Compress Video

Reduce file size. CRF controls quality: 18 (high quality) → 28 (low quality), 23 is balanced.

User might say: "compress video", "reduce file size", "make smaller for email"

Command:

bash
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -crf CRF_VALUE -preset medium -c:a aac -b:a 128k "OUTPUT"

Examples:

  • Balanced compression (CRF 23):
bash
ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "video_compressed.mp4"
  • High compression/smaller file (CRF 28):
bash
ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 28 -preset fast -c:a aac -b:a 96k "video_small.mp4"
  • High quality (CRF 18):
bash
ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k "video_hq.mp4"


Extract Audio

Extract audio track from video.

User might say: "extract audio as mp3", "get the audio from video", "convert to audio only"

Command:

bash
ffmpeg -y -hide_banner -i "INPUT" -vn -acodec CODEC "OUTPUT.FORMAT"

Codecs by format:

FormatCodec
mp3libmp3lame
aacaac
wavpcm_s16le
flacflac
ogglibvorbis
Example - Extract as MP3:
bash
ffmpeg -y -hide_banner -i "video.mp4" -vn -acodec libmp3lame "video.mp3"


Remove Audio

Create silent video (remove audio track).

User might say: "remove audio", "mute video", "make silent"

Command:

bash
ffmpeg -y -hide_banner -i "INPUT" -an -c:v copy "OUTPUT"

Example:

bash
ffmpeg -y -hide_banner -i "video.mp4" -an -c:v copy "video_silent.mp4"


Change Speed

Speed up or slow down video.

User might say: "speed up 2x", "slow motion", "make 10x timelapse"

Command:

bash
# Speed up (e.g., 2x speed)
ffmpeg -y -hide_banner -i "INPUT" -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" "OUTPUT"

# Slow down (e.g., 0.5x speed / half speed)
ffmpeg -y -hide_banner -i "INPUT" -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" "OUTPUT"

Formula:

  • Video: setpts = (1/speed)PTS (2x speed → 0.5PTS)
  • Audio: atempo = speed (must be 0.5-2.0, chain for extremes)
Examples:
  • 2x speed:
bash
ffmpeg -y -hide_banner -i "video.mp4" -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" "video_2x.mp4"
  • Half speed (slow motion):
bash
ffmpeg -y -hide_banner -i "video.mp4" -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" "video_slowmo.mp4"


Convert to GIF

Create animated GIF from video.

User might say: "make a gif", "convert to gif", "gif from 0:10 to 0:15"

Command:

bash
ffmpeg -y -hide_banner -i "INPUT" -ss START -t DURATION -vf "fps=15,scale=480:-1:flags=lanczos" -loop 0 "OUTPUT.gif"

Example - GIF of 5 seconds starting at 0:10:

bash
ffmpeg -y -hide_banner -i "video.mp4" -ss 00:00:10 -t 5 -vf "fps=15,scale=480:-1:flags=lanczos" -loop 0 "video.gif"


Rotate/Flip Video

Rotate or flip video orientation.

User might say: "rotate 90 degrees", "flip horizontally", "rotate upside down"

Commands:

bash
# Rotate 90° clockwise
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=1" -c:a copy "OUTPUT"

# Rotate 90° counter-clockwise
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=2" -c:a copy "OUTPUT"

# Rotate 180°
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=2,transpose=2" -c:a copy "OUTPUT"

# Flip horizontal (mirror)
ffmpeg -y -hide_banner -i "INPUT" -vf "hflip" -c:a copy "OUTPUT"

# Flip vertical
ffmpeg -y -hide_banner -i "INPUT" -vf "vflip" -c:a copy "OUTPUT"


Extract Screenshot/Frame

Capture a single frame from video.

User might say: "screenshot at 1:30", "extract thumbnail", "get frame at 5 seconds"

Command:

bash
ffmpeg -y -hide_banner -i "INPUT" -ss TIMESTAMP -frames:v 1 "OUTPUT.jpg"

Example:

bash
ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:30 -frames:v 1 "screenshot.jpg"


Add Watermark/Logo

Overlay image on video.

User might say: "add logo.png", "put watermark in corner", "overlay image"

Positions:

PositionOverlay Value
Top-leftoverlay=10:10
Top-rightoverlay=W-w-10:10
Bottom-leftoverlay=10:H-h-10
Bottom-rightoverlay=W-w-10:H-h-10
Centeroverlay=(W-w)/2:(H-h)/2
Command:
bash
ffmpeg -y -hide_banner -i "VIDEO" -i "LOGO" -filter_complex "overlay=POSITION" "OUTPUT"

Example - Logo in top-right:

bash
ffmpeg -y -hide_banner -i "video.mp4" -i "logo.png" -filter_complex "overlay=W-w-10:10" "video_watermarked.mp4"


Burn Subtitles

Permanently embed subtitles into video.

User might say: "add subtitles", "burn srt file", "embed captions"

Command:

bash
ffmpeg -y -hide_banner -i "INPUT" -vf "subtitles='SUBTITLE_FILE'" "OUTPUT"

Example:

bash
ffmpeg -y -hide_banner -i "video.mp4" -vf "subtitles='subtitles.srt'" "video_subtitled.mp4"


Merge/Concatenate Videos

Join multiple videos together.

User might say: "merge video1 and video2", "combine clips", "join intro and main"

Method: First create a text file listing videos, then concatenate.

Step 1 - Create file list (files.txt):

text
file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

Step 2 - Concatenate:

bash
ffmpeg -y -hide_banner -f concat -safe 0 -i files.txt -c copy "merged.mp4"


Time Format Reference

Use these formats for timestamps:

  • HH:MM:SS → 01:30:45 (1 hour 30 min 45 sec)
  • MM:SS → 05:30 (5 min 30 sec)
  • SS → 90 (90 seconds)
  • HH:MM:SS.mmm → 00:01:23.500 (with milliseconds)

Response Format

When generating commands:

  • Show the FFmpeg command in a code block
  • Briefly explain what it does
  • Mention if output filename was assumed
Example response:
text
Here's the command to cut your video from 1:21 to 1:35:

​
bash ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:21 -to 00:01:35 -c copy "video_trimmed.mp4" ​
text
This extracts the segment without re-encoding (using `-c copy` for speed). Output saved as `video_trimmed.mp4`.

Installation

Terminal bash

openclaw install ffmpeg-video-editor
    
Copied!

💻Code Examples

**Commands by format:**

commands-by-format.sh
# MP4 (most compatible)
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -c:a aac "OUTPUT.mp4"

# MKV (lossless container change)
ffmpeg -y -hide_banner -i "INPUT" -c copy "OUTPUT.mkv"

# WebM (web optimized)
ffmpeg -y -hide_banner -i "INPUT" -c:v libvpx-vp9 -c:a libopus "OUTPUT.webm"

# AVI
ffmpeg -y -hide_banner -i "INPUT" -c:v mpeg4 -c:a mp3 "OUTPUT.avi"

# MOV
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -c:a aac "OUTPUT.mov"

**Command:**

command.sh
# Speed up (e.g., 2x speed)
ffmpeg -y -hide_banner -i "INPUT" -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" "OUTPUT"

# Slow down (e.g., 0.5x speed / half speed)
ffmpeg -y -hide_banner -i "INPUT" -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" "OUTPUT"

**Commands:**

commands.sh
# Rotate 90° clockwise
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=1" -c:a copy "OUTPUT"

# Rotate 90° counter-clockwise
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=2" -c:a copy "OUTPUT"

# Rotate 180°
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=2,transpose=2" -c:a copy "OUTPUT"

# Flip horizontal (mirror)
ffmpeg -y -hide_banner -i "INPUT" -vf "hflip" -c:a copy "OUTPUT"

# Flip vertical
ffmpeg -y -hide_banner -i "INPUT" -vf "vflip" -c:a copy "OUTPUT"

**Step 1 - Create file list (files.txt):**

step-1---create-file-list-filestxt.txt
file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

**Example response:**

example-response.txt
Here's the command to cut your video from 1:21 to 1:35:

​

Tags

#image_and-video-generation

Quick Info

Category Content Creation
Model Claude 3.5
Complexity One-Click
Author mahmoudadelbghany
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install ffmpeg-video-editor