Frame is a native media conversion utility built in Rust. It provides a desktop interface for FFmpeg operations, with granular control over video, audio, image, subtitle, and metadata settings. The application uses a GPUI-CE front end and a reusable Rust conversion core for FFmpeg argument generation, source probing, compatibility validation, task control, and progress parsing.
Warning
Unsigned Application Notice Since the application is currently not Developer ID or certificate signed, your operating system may flag it:
- macOS: Release artifacts are ad-hoc signed but not notarized. The system
can flag the app and bundled binaries with a quarantine attribute. To run the
app, remove the attribute manually after installing it:
xattr -dr com.apple.quarantine /Applications/Frame.app
- Windows: Windows SmartScreen may prevent the application from starting. Click "More info" and then "Run anyway" to proceed.
If Frame helps you, consider supporting the project on GitHub Sponsors:
Current funding goals:
- Apple Developer Program:
$99/yearto sign and notarize macOS builds. - Microsoft code-signing certificate: estimated
$300-$700/yearto sign Windows builds and reduce SmartScreen friction.
Sponsor contributions are used first for these release-signing costs.
See GitHub Sponsors for full sponsorship details, tier suggestions, and a launch checklist.
- Media Types: Video, audio, and image sources.
- Supported Source Files:
- Video:
mp4,mov,mkv,avi,webm,gif - Audio:
mp3,m4a,wav,flac - Image:
png,jpg,jpeg,webp,bmp,tif,tiff,avif,heic,heif
- Video:
- Supported Output Formats:
- Video:
mp4,mkv,webm,mov,gif - Audio:
mp3,m4a,wav,flac - Image:
png,jpg,webp,bmp,tiff
- Video:
- Video Encoders:
libx264(H.264 / AVC)libx265(H.265 / HEVC)vp9(Google VP9)prores(Apple ProRes)libsvtav1(SVT-AV1)gifpalette output- Hardware Acceleration: macOS bundles include VideoToolbox encoders
(
h264_videotoolbox,hevc_videotoolbox); Windows bundles include NVIDIA NVENC encoders (h264_nvenc,hevc_nvenc,av1_nvenc). Linux bundles use software encoders.
- Image Encoders:
png,mjpeg(JPEG),libwebp(WebP),bmp,tiff. - Audio Encoders:
aac,ac3,libopus,mp3,alac,flac,pcm_s16le, plus optionallibfdk_aacwhen available. - Bitrate Control: CRF, target bitrate, audio VBR where supported, and codec-specific presets.
- Video Processing: Resolution presets, custom dimensions, FPS conversion, pixel format selection, scaling, crop, rotate, flip, and image overlay.
- Video Filters: Brightness, contrast, saturation, gamma, hue, color temperature, sharpen, Gaussian blur, denoise, deband, vignette, grayscale, and deinterlace controls.
- GIF Controls: Frame rate, color count, dithering, and loop count.
- Audio Controls: Codec, bitrate, VBR quality, channel layout, volume, and per-track selection.
- Audio Filters: Normalize, limiter, compressor, bass, treble, high-pass, low-pass, noise reduction, de-esser, and stereo width controls.
- Subtitles: Stream selection,
.srt/.ass/.vttsource filtering, burn-in subtitle file selection, font, size, color, outline color, and position controls. - Metadata: Preserve, clean, or replace metadata fields such as title, artist, album, genre, date, and comment.
- Metadata Probing: Automated source inspection through
ffprobe.
- Native UI: GPUI-CE application shell, custom titlebar, workspace/logs views, settings panels, and shared UI primitives.
- Shared Conversion Core:
frame-coreowns FFmpeg arguments, media rules, probing types, filter construction, and validation logic. - Concurrent Processing: Rust task controller for queueing and limiting simultaneous FFmpeg processes.
- Real-time Telemetry: FFmpeg progress and log events are parsed and shown in the app while conversions run.
- Runtime Binaries: Local development uses platform-specific FFmpeg and
FFprobe binaries under
frame-app/resources/binaries/. Native bundles include those tools and detect encoder capabilities from the bundled FFmpeg at startup.
- Language: Rust Edition 2024.
- UI: GPUI-CE.
- Native Dialogs:
rfd, with extension filtering for supported media and subtitle files. - Assets: Embedded SVG icons, bundled Overused Grotesk font, and native app icon resources for macOS, Windows, and Linux packages.
- Runtime Tools: FFmpeg and FFprobe.
- Serialization:
serde,serde_json. - Error Handling:
thiserror. - Media Rules: Shared JSON compatibility matrix consumed by Rust code.
The easiest way to get started is to download the latest release for your platform directly from GitHub.
Note: Since the application is not yet code-signed, you may need to manually approve it in your system settings.
Native release builds include a signed-manifest updater. Frame checks the latest GitHub Release manifest, verifies its Ed25519 signature and the SHA-256 hash of the selected platform asset, then installs through a small bundled helper.
Frame is available in the official WinGet repository under the 66HEX.Frame
identifier.
winget install --id 66HEX.Frame -eTo update:
winget upgrade --id 66HEX.Frame -eFor macOS users, Frame is available through the custom Homebrew tap:
brew tap 66HEX/frame
brew install --cask frameThe production Flatpak is distributed through Flathub under
io.github._66HEX.Frame. The Flathub build uses FFmpeg, FFprobe, codecs, and
media libraries from the Freedesktop runtime instead of bundled sidecar media
tools.
flatpak install flathub io.github._66HEX.FrameTo update:
flatpak update io.github._66HEX.FrameIf you prefer to build the application yourself or want to contribute, follow these steps.
1. Prerequisites
- Rust: Install Rust
- Platform toolchain: a C/C++ build toolchain and native desktop libraries required by Rust and GPUI-CE on your operating system.
2. Clone the Repository
git clone https://github.com/66HEX/frame.git
cd frame3. Setup Runtime Binaries
Frame requires FFmpeg and FFprobe runtime binaries. Release and development tasks download the platform-specific tools into ignored local runtime paths. To prepare them manually:
cargo xtask setup-ffmpeg4. Run or Build
-
Development:
cargo xtask run
-
Production Build:
cargo xtask build --release
-
Regenerate release workflows:
cargo xtask workflows
-
macOS DMG:
cargo install cargo-bundle cargo xtask bundle macos
-
Linux tarball with
.desktopmetadata and hicolor icons:cargo xtask bundle linux
-
Windows installer:
cargo xtask bundle windows
The release binary embeds the Frame
.icoresource during the normal Cargo build so Explorer and the taskbar can resolve the application icon.
Run the main checks before submitting changes:
cargo xtask ci- FFmpeg: Licensed under GPLv3.
- GPUI-CE: Native Rust UI framework used by Frame.
GPLv3 License. See LICENSE for details.
