https://github.com/66hex/frame
Fast FFmpeg GUI
https://github.com/66hex/frame
ffmpeg ffmpeg-gui macos media-converter rust svelte tauri video-conversion
Last synced: 1 day ago
JSON representation
Fast FFmpeg GUI
- Host: GitHub
- URL: https://github.com/66hex/frame
- Owner: 66HEX
- License: gpl-3.0
- Created: 2026-01-19T22:49:15.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2026-03-26T23:53:49.000Z (27 days ago)
- Last Synced: 2026-04-03T02:19:37.021Z (20 days ago)
- Topics: ffmpeg, ffmpeg-gui, macos, media-converter, rust, svelte, tauri, video-conversion
- Language: Svelte
- Homepage: https://www.framegui.app/
- Size: 102 MB
- Stars: 698
- Watchers: 7
- Forks: 29
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
Frame
[English](./README.md) | [简体中文](./readme/zh-CN.md) | [日本語](./readme/ja-JP.md) | [한국어](./readme/ko-KR.md) | [Español](./readme/es-ES.md) | [Русский](./readme/ru-RU.md) | [Français](./readme/fr-FR.md) | [Deutsch](./readme/de-DE.md) | [Italiano](./readme/it-IT.md)
**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, audio, and image conversion 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:
> ```bash
> 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.
## GitHub Sponsors
If Frame helps you, consider supporting the project on GitHub Sponsors:
[**Sponsor Frame**](https://github.com/sponsors/66HEX)
Current funding goals:
- **Apple Developer Program:** `$99/year` to sign and notarize macOS builds.
- **Microsoft code-signing certificate:** estimated `$300-$700/year` to sign Windows builds and reduce SmartScreen friction.
Sponsor contributions are used first for these release-signing costs.
See [GitHub Sponsors](https://github.com/sponsors/66HEX) for full sponsorship details, tier suggestions, and a launch checklist.
## Features
### Media Conversion Core
- **Media Types:** Video, Audio, Image.
- **Supported Output Formats:**
- **Video:** `mp4`, `mkv`, `webm`, `mov`, `gif`
- **Audio:** `mp3`, `m4a`, `wav`, `flac`
- **Image:** `png`, `jpg`, `webp`, `bmp`, `tiff`
- **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), `hevc_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA), `hevc_nvenc` (NVIDIA), `av1_nvenc` (NVIDIA).
- **Image Encoders:** `png`, `mjpeg` (JPEG), `libwebp` (WebP), `bmp`, `tiff`.
- **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`.
- **AI Upscaling:** Integrated `Real-ESRGAN` for high-quality video and image upscaling (x2, x4).
### Architecture & Workflow
- **Concurrent Processing:** Async task queue manager implemented in Rust (`tokio::mpsc`) limiting concurrent FFmpeg processes (default: 2).
- **Real-time Telemetry:** Stream parsing of FFmpeg `stderr` for accurate progress tracking and log output.
- **Preset Management:** Configuration persistence for reusable conversion profiles.
## Technical Stack
### Backend (Rust / Tauri)
- **Core:** Tauri v2 (Rust Edition 2024).
- **Runtime:** `tokio` (Async I/O).
- **Serialization:** `serde`, `serde_json`.
- **Process Management:** `tauri-plugin-shell` for sidecar execution (FFmpeg/FFprobe).
- **System Integration:** `tauri-plugin-dialog`, `tauri-plugin-fs`.
### Frontend (SvelteKit)
- **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:** Loskeley Mono (embedded).
## Installation
### Download Prebuilt Binaries
The easiest way to get started is to download the latest release for your platform (macOS, Windows, or Linux) directly from GitHub.
[**Download Latest Release**](https://github.com/66HEX/frame/releases)
> **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).
### WinGet (Windows)
Frame is available in the official WinGet repository under the `66HEX.Frame` identifier.
```powershell
winget install --id 66HEX.Frame -e
```
To update:
```powershell
winget upgrade --id 66HEX.Frame -e
```
### Homebrew (macOS)
For macOS users, you can install and update Frame easily using our custom Homebrew Tap:
```bash
brew tap 66HEX/frame
brew install --cask frame
```
### Linux System Requirements
Even when using the **AppImage**, Frame relies on the system's **WebKitGTK** and **GStreamer** libraries for rendering the UI and handling media playback. Native dialogs on Linux also require **XDG Desktop Portal** integration (plus a desktop-specific backend) and `zenity` as fallback. If the application crashes upon adding a source, the video preview remains blank, or file dialogs fail to open/theme correctly, install the packages below.
- **Ubuntu / Debian:**
```bash
sudo apt update
sudo apt install libwebkit2gtk-4.1-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-libav xdg-desktop-portal xdg-desktop-portal-gtk zenity
```
- **Arch Linux:**
```bash
sudo pacman -S --needed webkit2gtk-4.1 gst-plugins-base gst-plugins-good gst-libav xdg-desktop-portal xdg-desktop-portal-gtk zenity
```
- **Fedora:**
```bash
sudo dnf install webkit2gtk4.1 gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-libav xdg-desktop-portal xdg-desktop-portal-gtk zenity
```
> **KDE users:** install `xdg-desktop-portal-kde` (instead of `xdg-desktop-portal-gtk`) to get Plasma-native themed dialogs.
### Build from Source
If you prefer to build the application yourself or want to contribute, follow these steps.
**1. Prerequisites**
- **Rust:** [Install Rust](https://www.rust-lang.org/tools/install)
- **Bun (or Node.js):** [Install Bun](https://bun.sh/)
- **OS Dependencies:** Follow the [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/) for your operating system.
**2. Setup Project**
Clone the repository and install dependencies:
```bash
git clone https://github.com/66HEX/frame.git
cd frame
bun install
```
**3. Setup Binaries**
Frame requires FFmpeg/FFprobe sidecar binaries and Real-ESRGAN sidecar assets for AI upscaling. We provide scripts to fetch the correct versions for your platform automatically:
```bash
bun run setup:ffmpeg
bun run setup:upscaler
```
**4. Build or Run**
- **Development:**
```bash
bun tauri dev
```
- **Production Build:**
```bash
bun tauri build
```
## Usage
1. **Input:** Use the system dialog to select files.
2. **Configuration:**
- **Source:** View detected file metadata.
- **Output:** Select container format and output filename.
- **Video:** Configure codec, bitrate/CRF, resolution, and framerate.
- **Images:** Configure image resolution/scaling, pixel format, and optional AI upscaling.
- **Audio:** Select codec, bitrate, channels, and specific tracks.
- **Presets:** Save and load reusable conversion profiles.
3. **Execution:** Initiates the conversion process via the Rust backend.
4. **Monitoring:** View real-time logs and percentage counters in the UI.
## Star History

## Acknowledgments & Third-Party Code
- **Real-ESRGAN**: Copyright (c) 2021, Xintao Wang. Licensed under [BSD 3-Clause](https://github.com/xinntao/Real-ESRGAN/blob/master/LICENSE).
- **FFmpeg**: Licensed under [GPLv3](https://www.ffmpeg.org/legal.html).
## License
GPLv3 License. See [LICENSE](LICENSE) for details.