module Fluorite::Docs::D_PRESETS::CONVERSION_PRESETS

Overview

Smart Conversion Presets

Fluorite includes pre-calculated, battle-tested presets for frequent media conversion tasks. These presets encapsulate the complex mathematical calculations and multi-pass filtergraphs required for professional-grade video encoding.

Executive Summary & Key Topics

Topic Method / Anchor Description
Discord File Size Optimization .topic_01_discord_budgeting Guaranteeing uploads fit under Discord limits without rejection.
2-Pass Palette GIF Generation .topic_02_crisp_gif Generating high-definition GIFs with custom color palettes.
Automated Sprite Sheet Compression Pipeline .topic_03_sprite_sheet_compression Packing animation frames into power-of-two texture atlases with CLUT8/CLUT4 palette quantization.
Instant Lossless Trimming .topic_04_lossless_cut Cutting clips in milliseconds with stream copy (-c copy).

Related Guides & Source References

Defined in:

fluorite/docs/d_presets/conversion_presets.cr

Class Method Summary

Class Method Detail

def self.topic_01_discord_budgeting : Nil #

Discord File Size Optimization: Guaranteeing uploads fit under Discord limits without rejection.

Discord rejects attachments exceeding upload limits (10MB, 25MB, or 50MB). Fluorite's Discord preset queries duration via ffprobe, allocates total bits across video and audio, and transcodes the video to guarantee it fits under the limit with maximal visual fidelity:

Fluorite::Presets::Discord.convert("long_recording.mp4", "discord_upload.mp4", target_mb: 25.0)

def self.topic_02_crisp_gif : Nil #

2-Pass Palette GIF Generation: Generating high-definition GIFs with custom color palettes.

Standard GIF converters generate blurry, dithered artifacts. Fluorite uses a 2-pass filtergraph generating a full 256-color palette with Lanczos scaling:

Fluorite::Presets::Gif.convert("screen_record.mov", "demo.gif", fps: 15, width: 480)

def self.topic_03_sprite_sheet_compression : Nil #

Automated Sprite Sheet Compression Pipeline: Packing animation frames into power-of-two texture atlases with CLUT8/CLUT4 palette quantization.

Fluorite provides a Two-Tier Sprite Sheet Compression Pipeline (Fluorite::SpriteSheet) for Godot 4.8 and PS2 GS (CLUT8/CLUT4) workflows:

sheet = Fluorite.spritesheet do
  input "knight_walk.mp4"
  output "knight_sheet.png"
  frame_size 64, 64
  frames 16
  fps 12
  power_of_two!
  clut8! dither: :sierra2_4a
  pixel_art!
  metadata "knight_sheet.json"
  godot_import!
end
sheet.run

def self.topic_04_lossless_cut : Nil #

Instant Lossless Trimming: Cutting clips in milliseconds with stream copy (-c copy).

Cut any section of video without re-encoding:

Fluorite::Presets::Trim.cut("movie.mp4", "clip.mp4", from: "00:01:30", to: "00:02:15")