{"id":48531268,"url":"https://github.com/orlfman/ffmpeg-converter-gtk","last_synced_at":"2026-04-08T00:01:14.353Z","repository":{"id":340929713,"uuid":"1168213463","full_name":"orlfman/FFmpeg-Converter-GTK","owner":"orlfman","description":"GTK4 + libadwaita frontend for FFmpeg","archived":false,"fork":false,"pushed_at":"2026-04-02T03:57:10.000Z","size":24847,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T12:35:29.573Z","etag":null,"topics":["ffmpeg","frontend","svt-av1","trim","trimming","x265"],"latest_commit_sha":null,"homepage":"","language":"Vala","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/orlfman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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}},"created_at":"2026-02-27T06:07:49.000Z","updated_at":"2026-04-02T03:57:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"3b564581-f02d-4bec-bdda-9e878b3e4cb1","html_url":"https://github.com/orlfman/FFmpeg-Converter-GTK","commit_stats":null,"previous_names":["orlfman/ffmpeg-converter-gtk"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/orlfman/FFmpeg-Converter-GTK","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orlfman%2FFFmpeg-Converter-GTK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orlfman%2FFFmpeg-Converter-GTK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orlfman%2FFFmpeg-Converter-GTK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orlfman%2FFFmpeg-Converter-GTK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orlfman","download_url":"https://codeload.github.com/orlfman/FFmpeg-Converter-GTK/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orlfman%2FFFmpeg-Converter-GTK/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31533824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"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","frontend","svt-av1","trim","trimming","x265"],"created_at":"2026-04-08T00:00:30.277Z","updated_at":"2026-04-08T00:01:14.346Z","avatar_url":"https://github.com/orlfman.png","language":"Vala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FFmpeg Converter GTK\n\n**Modern GTK4 + libadwaita frontend for FFmpeg**\n\nMy own pet project. FFmpeg-Converter-GTK a simple GTK / Libadwaita frontend for FFmpeg. Currently supports encoding with SVT-AV1, x265, x264, and VP9. Slowly but surely adding more supported codecs, features and refinement.\n\n![Screenshot](Screenshots/Screenshot.png)\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch3\u003eScreenshots\u003c/h3\u003e\u003c/summary\u003e\n\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eMain\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eSVT-AV1\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-SVT-AV1.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003ex265\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-x265.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003ex264\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-x264.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eVP9\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-VP9.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eSubtitles\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Subtitles.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eCrop\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Crop.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eTrim\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Trim.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eCrop \u0026 Trim\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Crop-Trim.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eInformation\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Information.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eConsole\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Console.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003ePreferences\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Preferences.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n     \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eColor Correction\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-ColorCorrection.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eSmart Optimizer Preferences\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-SmartOptimizer-Settings.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eSmart Optimizer\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-SmartOptimizer.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eSmart Optimizer Invalid\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-SmartOptimizer-Invalid.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eSmart Optimizer Success\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-SmartOptimizer-Success.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eSmart Optimizer File Size Reduction\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-SmartOptimizer-Filesize-Reduction.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eSmart Optimizer Crop \u0026 Trim Tab\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-SmartOptimizer-CropTrimTab.png\" width=\"400\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eCrop \u0026 Trim Chapter Exractation\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Chapter Split.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eAudio Tab\u003c/b\u003e\u003cbr\u003e\u003cimg src=\"Screenshots/Screenshot-Audio-Tab.png\" width=\"400\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\n\u003c/details\u003e\n\n### Features\n\n- Dedicated tabs for **SVT-AV1**, **x265**, **x264**, and **VP9** with deep encoder control\n- Automatic, one-click crop detection for black bars, HDR to SDR tone mapping, scaling, rotation, speed control, and way more\n- Watermarking — text watermarks with configurable font, size, color, opacity, and position, plus an image watermark mode for logo overlays. Works across normal conversions, subtitle burn-in, and Crop \u0026 Trim re-encode paths.\n- Combine Videos — join multiple video files with copy mode (lossless, requires matching formats) or full re-encode mode with normalization. Supports crossfade transitions, chapter markers, drag-and-drop reordering, and metadata preservation.\n- Audio codec support for AAC, FLAC, MP3, Opus, and Vorbis, with an option to keep all audio tracks or only the default track\n- Live console output for debugging, and detailed information tab for video metadata\n- Extensive color and light correction and alteration. Full RGB manipulation.\n- Subtitles tab to reorder, remove, add, and extract subtitles.\n- Crop \u0026 Trim tab that supports cutting, trimming, scrubbing, re-encoding, copy, creating individual and concatenate segments, and interactive cropping. Even cropping on a per segment basis + concatenate. The video player allows you to select regions within the video to select and crop. Also now has a Chapter Extraction mode to split chapters out of videos!\n- By default the program uses the local systems FFmpeg but you can set custom path for FFmpeg if you wish to use a different version.\n- Native Adwaita UI\n\n## 🧠 Smart Optimizer\n\nTired of guessing your way to the perfect file size? Just press the **Smart Optimizer** button on the SVT-AV1, x265, x264 or VP9 tab, and the app handles everything else.\n\n### How it actually works\nIt doesn’t rely on some magic lookup table. Instead, it runs **one to six (based off duration and content of the video) quick calibration encodes** on *your specific video* at different quality levels, then fits a real exponential curve to the results. It also figures out whether you’re dealing with live-action, anime, or a screencast, and picks the perfect preset + CRF or static bitrate combo to land right on your target size.\n\n### What it actually looks at\n- **Your real content** — Anime with its flat colors and razor-sharp lines compresses totally differently from live-action. The optimizer checks edge density, color saturation, and motion to classify it properly, then uses the right preset table. Anime gets the aggressive (slow) presets it loves; live-action doesn’t waste time on settings that barely help.\n- **Your actual filters** — Scaling, cropping, denoise, framerate changes… all of it gets baked into the test encodes so the size prediction matches what you’ll really export.\n- **Trimmed length** — If you set start/end points on the General tab, it only budgets for the clip you’re actually keeping.\n- **Audio** — It subtracts the real audio bitrate from your target so the video gets an honest budget (no more “whoops, audio ate 30% of my file” surprises).\n\n### What you actually get\n- A **CRF or static bitrate + preset recommendation** (best quality for the size)\n- A **two-pass bitrate version** as a guaranteed-size backup\n- A **confidence score** so you know how much the prediction had to guess\n- Full calibration numbers dumped to the Console tab\n\n### When it can’t hit the target\nIt won’t just give up. It tells you exactly why and what to change: “trim to 42 seconds” or “scale down to \"X.\"”\n\nYou can set your default target size in **Preferences - Smart Optimizer**.\n\nRemember, its not perfect. Its not artificial intelligence scanning in real time. Its all math at work making the best estimate based off mathematical values and statistics. But its high quality estimations and very accurate for just being math + statistics. From my testing, a solid 70-80% accuracy level. Give it a try! \n\n**No more encode, check size, re-encode, repeat.**  \nJust pick the mode and go.\n\n---\n\n### Dependency\n\n```bash\nmeson, ninja, valac, pkg-config, GTK4, libadwaita, json-glib, FFmpeg, FFprobe, and GStreamer \n```\n\n### Install\n\nDownload the latest source release from [Releases](https://github.com/orlfman/FFmpeg-Converter-GTK/releases), extract it, then:\n\n```bash\ncd FFmpeg-Converter-GTK-\u003cversion\u003e\nmake\nsudo make install\n```\n\n### Development Build \u0026 Install\n\n```bash\ngit clone https://github.com/orlfman/FFmpeg-Converter-GTK.git\ncd FFmpeg-Converter-GTK                                                                                                                                                                                                    \nmake                                                      \nsudo make install\n\nor\n\ncd FFmpeg-Converter-GTK/DevTools\n./build.sh\n```\n\n### Uninstall\n\n```bash\ncd FFmpeg-Converter-GTK\nmake uninstall\n\nor\n\ncd FFmpeg-Converter-GTK/DevTools\n./uninstall.sh\n```\n\n### Rebuild\n\n```bash\ncd FFmpeg-Converter-GTK\nmake rebuild\n\nor\n\ncd FFmpeg-Converter-GTK/DevTools\n./build.sh\n```\n\n### Acknowledgments\n\nThis application is a frontend for [FFmpeg](https://ffmpeg.org) and does not bundle or distribute FFmpeg. \nFFmpeg is a trademark of [Fabrice Bellard](http://bellard.org/). \nUsers are responsible for installing FFmpeg separately on their system.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forlfman%2Fffmpeg-converter-gtk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forlfman%2Fffmpeg-converter-gtk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forlfman%2Fffmpeg-converter-gtk/lists"}