Skip to content

Conversation

@nedanwr
Copy link
Owner

@nedanwr nedanwr commented Jan 17, 2026

Description

This PR introduces a complete video operations feature set to ForgeKit, enabling users to perform a wide range of video editing and processing tasks through the CLI. The implementation includes:

  • Video Transcoding: Convert videos to H.264 format with customizable quality settings (CRF), encoding presets, scaling options, and audio re-encoding support
  • Video Trimming: Fast stream-copy based trimming with flexible time format support (seconds, MM:SS, HH:MM:SS)
  • Video Joining: Concatenate multiple video files with glob pattern support and natural sorting
  • Format Conversion: Convert between video formats (gif, webm, mp4, mov, avi, mkv) with enhanced GIF quality using palette generation
  • Thumbnail Extraction: Extract single frames from videos at specified timestamps
  • Speed Adjustment: Change video playback speed (slow-motion, timelapse) with audio synchronization
  • Rotation: Rotate videos by 90°, 180°, or 270° clockwise
  • Audio Muting: Remove audio tracks from video files
  • Image Sequence Stitching: Create videos or GIFs from image sequences with configurable frame rate and output format
  • Video Information: Display detailed video metadata (duration, resolution, codec, bitrate, frame rate)

The implementation includes a new video command module in the CLI with 10 subcommands, comprehensive FFmpeg integration in the core library, and full job specification and execution support. All operations support planning mode (--plan) and JSON output (--json) for integration with other tools.

Type of Change

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation only
  • refactor: Code refactoring (no behavior change)
  • perf: Performance improvement
  • test: Adding or updating tests
  • build: Build system or dependencies
  • ci: CI/workflow changes
  • chore: Maintenance tasks

Scope

  • cli - CLI commands and interface
  • core - Core library functionality
  • tools - Tool integrations (qpdf, ghostscript, etc.)
  • pdf - PDF-specific operations
  • packaging - Package configurations
  • Other:

Related Issues

Checklist

  • I have read the commit convention
  • My commits follow the conventional format: type(scope): description
  • I have added/updated tests as appropriate
  • All tests pass locally (cargo test)
  • Code passes lint checks (cargo clippy and cargo fmt)
  • I have updated documentation if needed

Breaking Changes

  • This PR contains breaking changes

Screenshots / Output

Example Commands

# Transcode video with quality control
forgekit video transcode video.mov --output video.mp4 --crf 20 --preset slow

# Trim video using stream copy (fast, no re-encoding)
forgekit video trim video.mp4 --start 0:30 --end 2:00 --output clip.mp4

# Join multiple videos with glob pattern
forgekit video join "part_*.mp4" --output full.mp4

# Convert to GIF with quality improvements
forgekit video convert video.mp4 -t gif --start 10 --duration 5 --width 480 --fps 15 --output clip.gif

# Stitch image sequence into video
forgekit video stitch "frame_*.png" -t mp4 --fps 24 --output animation.mp4

# Extract thumbnail
forgekit video thumbnail video.mp4 --time 1:30 --output preview.jpg

# Adjust playback speed
forgekit video speed video.mp4 --speed 2 --output fast.mp4

# Rotate video
forgekit video rotate video.mp4 --degrees 90 --output rotated.mp4

# Remove audio
forgekit video mute video.mp4 --output silent.mp4

# Show video information
forgekit video info video.mp4 --json

…humbnail, GIF creation, speed adjustment, rotation, and mute
…nail extraction, GIF conversion, speed adjustment, rotation, and audio mute options
…mming, joining, thumbnail extraction, GIF conversion, speed adjustment, rotation, and audio muting
… video editing functionalities including transcoding, trimming, joining, and more
…o format conversion, enhancing functionality to support multiple formats with improved quality handling for GIFs
…on and functionality to support various video formats
…onality for video format conversion and improving method naming for clarity
…s, renaming GIF conversion to a more generic Convert command with enhanced argument handling
…in operations, replacing 'gif' with 'convert' for clarity
…IFs from image sequences, including plan generation for command execution
…e sequences into videos or GIFs, with input validation and planning support
…e sequences into videos or GIFs, including parameters for format, frame rate, and optional width
…ge sequences into videos or GIFs, including input validation and support for multiple output formats
…g palette generation and usage in the ffmpeg command
@coderabbitai
Copy link

coderabbitai bot commented Jan 17, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@nedanwr nedanwr self-assigned this Jan 17, 2026
@nedanwr nedanwr merged commit 50e285a into develop Jan 17, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants