Frame is a high-performance media conversion utility built on the Tauri v2 framework. It provides a native interface for FFmpeg operations, allowing for granular control over video and audio transcoding parameters. The application leverages a Rust-based backend for concurrent task management and process execution, coupled with a Svelte 5 frontend for configuration and state monitoring.
Warning
Unsigned Application Notice Since the application is currently unsigned, your operating system will flag it:
- macOS: The system will flag the app and its sidecar binaries with a quarantine attribute. To run the app, remove the attribute manually:
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.
- Container Support:
mp4,mkv,webm,mov,mp3,m4a,wav,flac. - Video Encoders:
libx264(H.264 / AVC)libx265(H.265 / HEVC)vp9(Google VP9)prores(Apple ProRes)libsvtav1(Scalable Video Technology AV1)- Hardware Acceleration:
h264_videotoolbox(Apple Silicon),h264_nvenc(NVIDIA).
- Audio Encoders:
aac,ac3(Dolby Digital),libopus,mp3,alac(Apple Lossless),flac(Free Lossless Audio Codec),pcm_s16le(WAV). - Bitrate Control: Constant Rate Factor (CRF) or Target Bitrate (kbps).
- Scaling: Bicubic, Lanczos, Bilinear, Nearest Neighbor.
- Metadata Probing: Automated extraction of stream details (codec, duration, bitrate, channel layout) via
ffprobe.
- Concurrent Processing: Async task queue manager implemented in Rust (
tokio::mpsc) limiting concurrent FFmpeg processes (default: 2). - Real-time Telemetry: Stream parsing of FFmpeg
stderrfor accurate progress tracking and log output. - Preset Management: Configuration persistence for reusable conversion profiles.
- Core: Tauri v2 (Rust Edition 2024).
- Runtime:
tokio(Async I/O). - Serialization:
serde,serde_json. - Process Management:
tauri-plugin-shellfor sidecar execution (FFmpeg/FFprobe). - System Integration:
tauri-plugin-dialog,tauri-plugin-fs,window-vibrancy.
- Framework: Svelte 5 (Runes API).
- Build System: Vite.
- Styling: Tailwind CSS v4,
clsx,tailwind-merge. - State Management: Svelte 5
$state/$props. - Internationalization: Multi-language interface with automatic system language detection.
- Typography: Geist Sans (embedded), Geist Mono (embedded).
The easiest way to get started is to download the latest release for your platform (macOS, Windows, or Linux) directly from GitHub.
Note: Since the application is not yet code-signed, you may need to manually approve it in your system settings (see the warning at the top of this file).
For macOS users, you can install and update Frame easily using our custom Homebrew Tap:
brew tap 66HEX/frame
brew install --cask frameEven when using the AppImage, Frame relies on the system's WebKitGTK and GStreamer libraries for rendering the UI and handling media playback. If the application crashes upon adding a source or the video preview remains blank, you likely need to install the missing GStreamer plugins.
-
Ubuntu / Debian:
sudo apt update sudo apt install libwebkit2gtk-4.1-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-libav
-
Arch Linux:
sudo pacman -S --needed webkit2gtk-4.1 gst-plugins-base gst-plugins-good gst-libav
-
Fedora:
sudo dnf install webkit2gtk4.1 gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-libav
If you prefer to build the application yourself or want to contribute, follow these steps.
1. Prerequisites
- Rust: Install Rust
- Bun (or Node.js): Install Bun
- OS Dependencies: Follow the Tauri prerequisites for your operating system.
2. Setup Project
Clone the repository and install dependencies:
git clone https://github.com/66HEX/frame.git
cd frame
bun install3. Setup Binaries
Frame requires FFmpeg and FFprobe sidecar binaries. We provide a script to fetch the correct version for your platform automatically:
bun run setup:binaries4. Build or Run
-
Development:
bun tauri dev
-
Production Build:
bun tauri build
- Input: Use the system dialog to select files.
- Configuration:
- Source: View detected file metadata.
- Output: Select container format and output filename.
- Video: Configure codec, bitrate/CRF, resolution, and framerate.
- Audio: Select codec, bitrate, channels, and specific tracks.
- Presets: Save and load reusable conversion profiles.
- Execution: Initiates the conversion process via the Rust backend.
- Monitoring: View real-time logs and percentage counters in the UI.
GPLv3 License. See LICENSE for details.
