Skip to main content

AI-powered CLI that translates natural language to safe ffmpeg commands

Project description

๐ŸŽฌ ai-ffmpeg-cli

PyPI version PyPI Downloads Python 3.10+ License: MIT codecov CI/CD Pipeline

Stop Googling ffmpeg commands. Just describe what you want.

ai-ffmpeg-cli preview

ai-ffmpeg-cli is an AI-powered CLI that translates natural language into safe, previewable ffmpeg commands. Built for developers, content creators, and anyone who works with media files but doesn't want to memorize complex syntax.

โœจ Why ai-ffmpeg-cli?

  • ๐Ÿค– AI-Native: Translate plain English to perfect ffmpeg commands
  • ๐Ÿ”’ Safety First: Preview every command before execution
  • โšก 10x Faster: Skip the documentation, Stack Overflow, and trial-and-error
  • ๐ŸŽฏ Battle-Tested: Generates reliable, production-ready commands
  • ๐Ÿ”„ Smart Defaults: Sensible codec and quality settings out of the box
# Instead of this...
ffmpeg -i input.mp4 -vf "scale=1280:720" -c:v libx264 -c:a aac -b:v 2000k output.mp4

# Just say this... (cli command is different)
aiclip "convert input.mp4 to 720p with good quality"

๐Ÿš€ Quick Start

Installation

# Install from PyPI
pip install ai-ffmpeg-cli

Setup

# Set your OpenAI API key
export OPENAI_API_KEY="sk-your-key-here"

# Or create a .env file
echo "OPENAI_API_KEY=sk-your-key-here" > .env

First Command

Interactive mode (type your request after launching):

aiclip
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Welcome to Interactive Mode โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                                                                                           โ”‚
โ”‚  ai-ffmpeg-cli v0.2.2                                                                                     โ”‚
โ”‚                                                                                                           โ”‚
โ”‚  AI-powered video and audio processing with natural language                                              โ”‚
โ”‚  Type your request in plain English and let AI handle the ffmpeg complexity!                              โ”‚
โ”‚                                                                                                           โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

               Available Media Files               
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ  Type  โ”ƒ Count โ”ƒ Files                          โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ Videos โ”‚   1   โ”‚ โ€ข input.mp4                    โ”‚
โ”‚ Images โ”‚   2   โ”‚ โ€ข logo.png                     โ”‚
โ”‚        โ”‚       โ”‚ โ€ข watermark.png                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Output Configuration โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Output Directory: /path/to/your/aiclip                                                                    โ”‚
โ”‚ Generated files will be saved here                                                                        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

aiclip> convert this video to 720p

โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ # โ”ƒ Command                                      โ”ƒ Output                                        โ”ƒ Status โ”ƒ
โ”กโ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1 โ”‚ ffmpeg -i input.mp4 -vf scale=1280:720...    โ”‚ /path/to/your/aiclip/input_720p.mp4           โ”‚  New   โ”‚
โ””โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Confirmation Required โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                                                                                           โ”‚
โ”‚  Run these commands?                                                                                      โ”‚
โ”‚                                                                                                           โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
 [y/n]: Using default: Y

Or run a one-shot command (no interactive prompt):

aiclip --dry-run "convert input.mp4 to 720p with good quality"

๐Ÿ“– Usage Examples

Video Processing

# Convert formats
aiclip "convert input.mov to mp4 with h264 and aac"

# Resize videos  
aiclip "downscale video.mp4 to 720p"
aiclip "make input.mp4 1080p resolution"

# Compress files
aiclip "compress large-video.mp4 to smaller size"
aiclip "reduce file size with CRF 23"

# Create animated GIFs
aiclip "convert input.mp4 to animated gif"
aiclip "create a 5 second animated gif from video.mp4"

Audio Operations

# Extract audio
aiclip "extract audio from movie.mp4 to mp3"
aiclip "get audio track from video as wav"

# Remove audio
aiclip "remove audio from video.mp4"

Trimming & Cutting

# Time-based cutting
aiclip "trim first 30 seconds from video.mp4"
aiclip "keep segment from 2:15 to 3:45 in input.mp4"
aiclip "cut out middle 5 minutes"

Image Extraction

# Thumbnails
aiclip "create thumbnail at 10 seconds from video.mp4"
aiclip "extract frame at 2:30 as PNG"

# Frame sequences
aiclip "extract one frame every 5 seconds"
aiclip "get all frames from video as images"

Advanced Operations

# Overlays
aiclip "add watermark logo.png to top-right of video.mp4"  
aiclip "overlay text on video at position 10:10"

# Batch processing
aiclip "convert all .mov files to .mp4"

๐ŸŽ›๏ธ Command Line Options

# One-shot mode (no interaction)
aiclip "your command here"

# Skip confirmation prompts  
aiclip --yes "convert video.mp4 to 720p"

# Preview only (don't execute)
aiclip --dry-run "compress input.mp4"

# Use different AI model
aiclip --model gpt-4o-mini "extract audio"

# Increase timeout for complex requests
aiclip --timeout 120 "complex processing task"

# Verbose logging for troubleshooting
aiclip --verbose "your command"

# Specify custom output directory
aiclip --output-dir /path/to/output "convert video.mp4 to 720p"

Subcommands and option placement

You can also use the explicit nl subcommand. Put global options before the subcommand:

aiclip --yes nl "thumbnail at 10s from test.mp4"
aiclip --dry-run --model gpt-4o-mini nl "compress input.mp4"

Do not invoke the binary twice:

# Incorrect
aiclip aiclip --yes nl "..."

๐Ÿ”ง Configuration

aiclip uses environment variables and .env files for configuration:

# Required
OPENAI_API_KEY=sk-your-openai-api-key

# Optional
AICLIP_MODEL=gpt-4o              # AI model to use
AICLIP_DRY_RUN=false            # Preview commands by default
AICLIP_OUTPUT_DIR=aiclip        # Default output directory

๐ŸŽฏ Smart Defaults & Safety

  • Preview First: Every command is shown before execution
  • Overwrite Protection: Warns before overwriting existing files
  • Sensible Codecs: Automatically chooses h264+aac for MP4, libx265 for compression
  • Stream Copy: Uses -c copy for trimming when possible (faster, lossless)
  • Context Aware: Scans your directory to suggest input files and durations
  • Organized Output: All generated files are saved to a dedicated output directory
  • Duration Support: Automatically handles time-based requests (e.g., "5 second GIF")

๐Ÿ“ Output Directory Management

aiclip automatically organizes all generated files in a dedicated output directory:

# Default behavior - files saved to "aiclip" folder
aiclip "convert video.mp4 to 720p"
# Output: ./aiclip/video_720p.mp4

# Custom output directory
aiclip --output-dir /path/to/output "convert video.mp4 to 720p"
# Output: /path/to/output/video_720p.mp4

# Environment variable configuration
export AICLIP_OUTPUT_DIR=my_outputs
aiclip "convert video.mp4 to 720p"
# Output: ./my_outputs/video_720p.mp4

Benefits:

  • ๐Ÿ—‚๏ธ Organized: All generated files in one place
  • ๐Ÿ” Easy to find: No more searching through mixed directories
  • ๐Ÿงน Clean workspace: Input files stay separate from outputs
  • ๐Ÿ“Š Progress tracking: See all your generated files at a glance

โฑ๏ธ Duration and Time Handling

aiclip intelligently handles time-based requests for video and GIF creation:

# Create GIFs with specific duration
aiclip "convert video.mp4 to 5 second animated gif"
aiclip "create a 10 second animated gif from input.mp4"

# Time-based video operations
aiclip "extract first 30 seconds from video.mp4"
aiclip "create 15 second clip from input.mp4"

# Thumbnails at specific times
aiclip "extract frame at 2:30 from video.mp4"
aiclip "create thumbnail at 10 seconds from input.mp4"

Supported time formats:

  • Seconds: "5 second", "10s", "30 seconds"
  • Time codes: "2:30", "1:45:30", "00:02:15"
  • Duration: "5 second duration", "10 second clip"

๐Ÿ“Š Supported Operations

Operation Examples ffmpeg Equivalent
Convert "convert to mp4", "make it h264" -c:v libx264 -c:a aac
Resize "720p", "1920x1080", "scale to 50%" -vf scale=1280:720
Compress "make smaller", "CRF 28" -c:v libx265 -crf 28
Extract Audio "get audio as mp3" -q:a 0 -map a
Trim "first 30 seconds", "2:15 to 3:45" -ss 00:02:15 -to 00:03:45
Thumbnail "frame at 10s" -ss 00:00:10 -vframes 1
Overlay "watermark top-right" -filter_complex overlay=W-w-10:10
Batch "all *.mov files" Shell loops with glob patterns
GIF Creation "animated gif", "5 second gif" -vf fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse -c:v gif

๐Ÿ› ๏ธ Development

# Clone and setup
git clone https://github.com/d-k-patel/ai-ffmpeg-cli.git
cd ai-ffmpeg-cli
make setup

# Run tests
make test

# Check code quality  
make lint

# Try demo commands
make demo

๐Ÿ“‹ Requirements

  • Python 3.10+ (uses modern type hints)
  • ffmpeg installed and available in PATH
    • macOS: brew install ffmpeg
    • Ubuntu: sudo apt install ffmpeg
    • Windows: Download from ffmpeg.org
  • OpenAI API key for natural language processing

๐Ÿ†˜ Troubleshooting

Common Issues

"OPENAI_API_KEY is required"

# Set your API key
export OPENAI_API_KEY="sk-your-key-here"
# Or add it to .env file

"ffmpeg not found in PATH"

# Install ffmpeg
brew install ffmpeg          # macOS
sudo apt install ffmpeg      # Ubuntu
# Windows: download from ffmpeg.org

"Failed to parse natural language prompt"

  • Try being more specific in your request
  • Use --model gpt-4o for better accuracy
  • Increase timeout with --timeout 120
  • Check your internet connection

"No input files found"

  • Ensure files exist in current directory
  • Check file extensions match your request
  • Use ls to verify available files

"Duration not applied to GIF/video"

  • Be explicit about duration: "5 second animated gif"
  • Use clear time specifications: "10 second video clip"
  • Check that the AI model includes duration in the generated command

Getting Help

  • ๐Ÿ“– Documentation: Full guides at [docs link]
  • ๐Ÿ’ฌ Discord: Join our community for real-time help
  • ๐Ÿ› Issues: Report bugs on GitHub Issues
  • ๐Ÿ’ก Discussions: Feature requests and Q&A on GitHub Discussions

๐Ÿค Contributing

We love contributions! Whether it's:

  • ๐Ÿ› Bug reports and feature requests
  • ๐Ÿ“– Documentation improvements
  • ๐Ÿงช Test cases for edge scenarios
  • ๐Ÿ’ป Code contributions for new features
  • ๐ŸŽจ Examples and tutorials

See our Contributing Guide to get started.

๐Ÿ“ˆ What's Next?

  • ๐Ÿ”„ Batch Templates: Save and reuse complex workflows
  • ๐ŸŽ›๏ธ GUI Mode: Visual interface for non-CLI users
  • โšก Local Models: Run without internet using local AI
  • ๐Ÿข Team Features: Shared commands and analytics
  • ๐Ÿ”Œ Integrations: GitHub Actions, Docker, CI/CD pipelines
  • ๐ŸŽฌ Enhanced Duration Support: Better handling of time-based requests
  • ๐Ÿ“ Advanced Output Management: Custom naming patterns and organization

๐Ÿ“„ License

MIT License - see LICENSE file for details.

โญ Support

If aiclip saves you time, please:

  • โญ Star this repository
  • ๐Ÿฆ Share on social media
  • ๐Ÿ“ Write a review or blog post
  • ๐Ÿ’ฌ Tell your developer friends

Made with โค๏ธ by developers who got tired of Googling ffmpeg commands
๐ŸŽฌ Turn your words into perfect video commands

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ai_ffmpeg_cli-0.2.4.tar.gz (91.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ai_ffmpeg_cli-0.2.4-py3-none-any.whl (68.4 kB view details)

Uploaded Python 3

File details

Details for the file ai_ffmpeg_cli-0.2.4.tar.gz.

File metadata

  • Download URL: ai_ffmpeg_cli-0.2.4.tar.gz
  • Upload date:
  • Size: 91.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for ai_ffmpeg_cli-0.2.4.tar.gz
Algorithm Hash digest
SHA256 c992aef669a99e77003cf2f7865e39fab1c73b756a870733bbe9bbe4e9f1f871
MD5 98234bf36aa58ffd3af87a5a007dcada
BLAKE2b-256 4bc6bbccb5393969d31ede6518c477ba7c53364da3956a8cacc94736a6473b92

See more details on using hashes here.

File details

Details for the file ai_ffmpeg_cli-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: ai_ffmpeg_cli-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 68.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for ai_ffmpeg_cli-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cb98113ab2fbdb83c3c8b3d3cd3513ac65c4f7b96b4f1358de4da81e7268300a
MD5 7b064889bd89d9b4253cc28f83efb0cc
BLAKE2b-256 5c1b9caec0eae1bc75c07e5a21635aa58532ba4395a1a0a21161191ca711cee5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page