{"id":41214773,"url":"https://github.com/66hex/frame","last_synced_at":"2026-04-21T23:00:46.510Z","repository":{"id":333579445,"uuid":"1137837751","full_name":"66HEX/frame","owner":"66HEX","description":"Fast FFmpeg GUI","archived":false,"fork":false,"pushed_at":"2026-03-26T23:53:49.000Z","size":107479,"stargazers_count":698,"open_issues_count":4,"forks_count":29,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-04-03T02:19:37.021Z","etag":null,"topics":["ffmpeg","ffmpeg-gui","macos","media-converter","rust","svelte","tauri","video-conversion"],"latest_commit_sha":null,"homepage":"https://www.framegui.app/","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/66HEX.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["66HEX"]}},"created_at":"2026-01-19T22:49:15.000Z","updated_at":"2026-04-03T01:20:54.000Z","dependencies_parsed_at":"2026-01-26T02:02:22.927Z","dependency_job_id":"d336e18c-bd9a-4e3b-a1da-887d2cf4960f","html_url":"https://github.com/66HEX/frame","commit_stats":null,"previous_names":["66hex/frame"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/66HEX/frame","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/66HEX%2Fframe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/66HEX%2Fframe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/66HEX%2Fframe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/66HEX%2Fframe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/66HEX","download_url":"https://codeload.github.com/66HEX/frame/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/66HEX%2Fframe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32113748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ffmpeg","ffmpeg-gui","macos","media-converter","rust","svelte","tauri","video-conversion"],"created_at":"2026-01-22T23:58:11.990Z","updated_at":"2026-04-21T23:00:46.504Z","avatar_url":"https://github.com/66HEX.png","language":"Svelte","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./icon.png\" width=\"256\" height=\"256\" alt=\"Frame Icon\" /\u003e\n  \u003ch1\u003eFrame\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[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)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/Tauri-v2-orange?style=flat-square\u0026logo=tauri\" alt=\"Tauri\" /\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/Svelte-v5-red?style=flat-square\u0026logo=svelte\" alt=\"Svelte\" /\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/Rust-Edition_2024-black?style=flat-square\u0026logo=rust\" alt=\"Rust\" /\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/TypeScript-5.9.3-blue?style=flat-square\u0026logo=typescript\" alt=\"TypeScript\" /\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/Tailwind_CSS-v4-38bdf8?style=flat-square\u0026logo=tailwindcss\" alt=\"Tailwind\" /\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/license-GPL--3.0-green?style=flat-square\" alt=\"License\" /\u003e\n\t\u003ca href=\"https://github.com/sponsors/66HEX\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/Sponsor-GitHub-pink?style=flat-square\u0026logo=githubsponsors\" alt=\"GitHub Sponsors\" /\u003e\n\t\u003c/a\u003e\n\u003c/div\u003e\n\n**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.\n\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./preview.png\" alt=\"Frame Application Preview\" width=\"800\" /\u003e\n\u003c/div\u003e\n\u003cbr /\u003e\n\n\u003e [!WARNING]  \n\u003e **Unsigned Application Notice**\n\u003e Since the application is currently unsigned, your operating system will flag it:\n\u003e\n\u003e - **macOS:** The system will flag the app and its sidecar binaries with a quarantine attribute. To run the app, remove the attribute manually:\n\u003e   ```bash\n\u003e   xattr -dr com.apple.quarantine /Applications/Frame.app\n\u003e   ```\n\u003e - **Windows:** Windows SmartScreen may prevent the application from starting. Click **\"More info\"** and then **\"Run anyway\"** to proceed.\n\n## GitHub Sponsors\n\nIf Frame helps you, consider supporting the project on GitHub Sponsors:\n\n[**Sponsor Frame**](https://github.com/sponsors/66HEX)\n\nCurrent funding goals:\n\n- **Apple Developer Program:** `$99/year` to sign and notarize macOS builds.\n- **Microsoft code-signing certificate:** estimated `$300-$700/year` to sign Windows builds and reduce SmartScreen friction.\n\nSponsor contributions are used first for these release-signing costs.\n\nSee [GitHub Sponsors](https://github.com/sponsors/66HEX) for full sponsorship details, tier suggestions, and a launch checklist.\n\n## Features\n\n### Media Conversion Core\n\n- **Media Types:** Video, Audio, Image.\n- **Supported Output Formats:**\n  - **Video:** `mp4`, `mkv`, `webm`, `mov`, `gif`\n  - **Audio:** `mp3`, `m4a`, `wav`, `flac`\n  - **Image:** `png`, `jpg`, `webp`, `bmp`, `tiff`\n- **Video Encoders:**\n  - `libx264` (H.264 / AVC)\n  - `libx265` (H.265 / HEVC)\n  - `vp9` (Google VP9)\n  - `prores` (Apple ProRes)\n  - `libsvtav1` (Scalable Video Technology AV1)\n  - **Hardware Acceleration:** `h264_videotoolbox` (Apple Silicon), `hevc_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA), `hevc_nvenc` (NVIDIA), `av1_nvenc` (NVIDIA).\n- **Image Encoders:** `png`, `mjpeg` (JPEG), `libwebp` (WebP), `bmp`, `tiff`.\n- **Audio Encoders:** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`, `alac` (Apple Lossless), `flac` (Free Lossless Audio Codec), `pcm_s16le` (WAV).\n- **Bitrate Control:** Constant Rate Factor (CRF) or Target Bitrate (kbps).\n- **Scaling:** Bicubic, Lanczos, Bilinear, Nearest Neighbor.\n- **Metadata Probing:** Automated extraction of stream details (codec, duration, bitrate, channel layout) via `ffprobe`.\n- **AI Upscaling:** Integrated `Real-ESRGAN` for high-quality video and image upscaling (x2, x4).\n\n### Architecture \u0026 Workflow\n\n- **Concurrent Processing:** Async task queue manager implemented in Rust (`tokio::mpsc`) limiting concurrent FFmpeg processes (default: 2).\n- **Real-time Telemetry:** Stream parsing of FFmpeg `stderr` for accurate progress tracking and log output.\n- **Preset Management:** Configuration persistence for reusable conversion profiles.\n\n## Technical Stack\n\n### Backend (Rust / Tauri)\n\n- **Core:** Tauri v2 (Rust Edition 2024).\n- **Runtime:** `tokio` (Async I/O).\n- **Serialization:** `serde`, `serde_json`.\n- **Process Management:** `tauri-plugin-shell` for sidecar execution (FFmpeg/FFprobe).\n- **System Integration:** `tauri-plugin-dialog`, `tauri-plugin-fs`.\n\n### Frontend (SvelteKit)\n\n- **Framework:** Svelte 5 (Runes API).\n- **Build System:** Vite.\n- **Styling:** Tailwind CSS v4, `clsx`, `tailwind-merge`.\n- **State Management:** Svelte 5 `$state` / `$props`.\n- **Internationalization:** Multi-language interface with automatic system language detection.\n- **Typography:** Loskeley Mono (embedded).\n\n## Installation\n\n### Download Prebuilt Binaries\n\nThe easiest way to get started is to download the latest release for your platform (macOS, Windows, or Linux) directly from GitHub.\n\n[**Download Latest Release**](https://github.com/66HEX/frame/releases)\n\n\u003e **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).\n\n### WinGet (Windows)\n\nFrame is available in the official WinGet repository under the `66HEX.Frame` identifier.\n\n```powershell\nwinget install --id 66HEX.Frame -e\n```\n\nTo update:\n\n```powershell\nwinget upgrade --id 66HEX.Frame -e\n```\n\n### Homebrew (macOS)\n\nFor macOS users, you can install and update Frame easily using our custom Homebrew Tap:\n\n```bash\nbrew tap 66HEX/frame\nbrew install --cask frame\n```\n\n### Linux System Requirements\n\nEven 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.\n\n- **Ubuntu / Debian:**\n\n  ```bash\n  sudo apt update\n  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\n  ```\n\n- **Arch Linux:**\n\n  ```bash\n  sudo pacman -S --needed webkit2gtk-4.1 gst-plugins-base gst-plugins-good gst-libav xdg-desktop-portal xdg-desktop-portal-gtk zenity\n  ```\n\n- **Fedora:**\n  ```bash\n  sudo dnf install webkit2gtk4.1 gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-libav xdg-desktop-portal xdg-desktop-portal-gtk zenity\n  ```\n\n\u003e **KDE users:** install `xdg-desktop-portal-kde` (instead of `xdg-desktop-portal-gtk`) to get Plasma-native themed dialogs.\n\n### Build from Source\n\nIf you prefer to build the application yourself or want to contribute, follow these steps.\n\n**1. Prerequisites**\n\n- **Rust:** [Install Rust](https://www.rust-lang.org/tools/install)\n- **Bun (or Node.js):** [Install Bun](https://bun.sh/)\n- **OS Dependencies:** Follow the [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/) for your operating system.\n\n**2. Setup Project**\n\nClone the repository and install dependencies:\n\n```bash\ngit clone https://github.com/66HEX/frame.git\ncd frame\nbun install\n```\n\n**3. Setup Binaries**\n\nFrame 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:\n\n```bash\nbun run setup:ffmpeg\nbun run setup:upscaler\n```\n\n**4. Build or Run**\n\n- **Development:**\n\n  ```bash\n  bun tauri dev\n  ```\n\n- **Production Build:**\n  ```bash\n  bun tauri build\n  ```\n\n## Usage\n\n1.  **Input:** Use the system dialog to select files.\n2.  **Configuration:**\n    - **Source:** View detected file metadata.\n    - **Output:** Select container format and output filename.\n    - **Video:** Configure codec, bitrate/CRF, resolution, and framerate.\n    - **Images:** Configure image resolution/scaling, pixel format, and optional AI upscaling.\n    - **Audio:** Select codec, bitrate, channels, and specific tracks.\n    - **Presets:** Save and load reusable conversion profiles.\n3.  **Execution:** Initiates the conversion process via the Rust backend.\n4.  **Monitoring:** View real-time logs and percentage counters in the UI.\n\n## Star History\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=66HEX/frame\u0026type=timeline\u0026theme=dark\" /\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=66HEX/frame\u0026type=timeline\" /\u003e\n  \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=66HEX/frame\u0026type=timeline\" /\u003e\n\u003c/picture\u003e\n\n## Acknowledgments \u0026 Third-Party Code\n\n- **Real-ESRGAN**: Copyright (c) 2021, Xintao Wang. Licensed under [BSD 3-Clause](https://github.com/xinntao/Real-ESRGAN/blob/master/LICENSE).\n- **FFmpeg**: Licensed under [GPLv3](https://www.ffmpeg.org/legal.html).\n\n## License\n\nGPLv3 License. See [LICENSE](LICENSE) for details.\n","funding_links":["https://github.com/sponsors/66HEX"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F66hex%2Fframe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F66hex%2Fframe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F66hex%2Fframe/lists"}