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
- src/fluorite/presets/discord.cr
- src/fluorite/presets/gif.cr
- src/fluorite/presets/sprite_sheet.cr
- src/fluorite/presets/web.cr
- src/fluorite/presets/trim.cr
Defined in:
fluorite/docs/d_presets/conversion_presets.crClass Method Summary
-
.topic_01_discord_budgeting : Nil
Discord File Size Optimization: Guaranteeing uploads fit under Discord limits without rejection.
-
.topic_02_crisp_gif : Nil
2-Pass Palette GIF Generation: Generating high-definition GIFs with custom color palettes.
-
.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.
-
.topic_04_lossless_cut : Nil
Instant Lossless Trimming: Cutting clips in milliseconds with stream copy (-c copy).
Class Method Detail
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)
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)
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
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")