FFmpegFreeUI (3FUI) Deep Dive: A Windows-Only Cockpit That Turns FFmpeg into a Batch-Producing Beast
“
TL;DR: 3FUI is a Windows GUI that exposes every FFmpeg knob you can imagine, keeps zero built-in presets, and treats multi-file jobs as independent snapshots. If you want brute-force transparency instead of “click-one-button magic”, this is your playground.
What exact pain does 3FUI solve, and who should care?
Core question answered: “I already know FFmpeg commands—why would I need another GUI?”
3FUI exists because the author (and many encoders) was tired of “black-box” tools that hide parameters, inject watermarks, or cap the queue at 10 files. It targets people who:
-
need batch (hundreds of files, unattended) -
want hardware acceleration but still tweak CQ/CRF by ±1 -
share preset files with teammates, not 30-screen videos -
refuse to re-encode already-crunched streaming downloads
Scenario: A fansub group receives 13 4K BDMVs. They drag all .m2ts into 3FUI, hold Ctrl to open a side panel, choose libsvtav1 CRF 30, add loudnorm audio, then go to bed. Next morning each file has its own JSON snapshot and a matching .log—no manual scripting, no filename collision, no GUI lock-up.
Installation cheat-sheet: from zero to first encode in 5 minutes
Core question answered: “What do I actually download, and in what order?”
-
Pick a build
Build Size Needs .NET 10 runtime? Plugin friendly? Notes SingleFile ~90 MB YES YES One exe, easiest to share ReadyToRun ~150 MB NO partial Starts slower, plugins only if folder kept SelfContained ~400 MB NO YES 10 k+ files, avoid mechanical HDD -
Install runtime (only if SingleFile)
-
Grab “.NET 10 Desktop Runtime x64” from Microsoft, next-next-done.
-
-
Fetch FFmpeg
-
gyan.dev → ffmpeg-git-full.7zor BtbN →ffmpeg-master-latest-win64-gpl.zip -
Extract ffmpeg.exe,ffprobe.exe,ffplay.exeinto the same folder as 3FUI
OR drop them anywhere and add that folder to systemPath.
-
-
Launch
FFmpegFreeUI.exe-
No red “FFmpeg not found” banner = OK -
Settings → Performance Monitor shows CPU/GPU temps = driver OK
-
-
Smoke-test
-
Drag a 30 s clip → Video → Encoder libx264→ CRF 23 → Start -
Bottom bar shows progress and ETA → you’re green.
-
Author’s reflection: The README repeats “SingleFile needs runtime” three times with giant red arrows, yet half the GitHub issues are “it doesn’t start”. Human nature > documentation.
UI walk-through: where is everything, and why is it there?
Core question answered: “How is the interface organised, and can I ignore parts I don’t need?”
3.1 Main panel groups (left → right)
-
Parameter tabs – identical to FFmpeg categories
Video | Audio | Filters | Subtitle | Advanced -
Queue list – drag-files-here zone, every entry = frozen snapshot -
Bottom log – real-time FFmpeg stdout, click “Capture N errors” to open full log
3.2 Hidden but handy
-
Ctrl + drag file → opens temporary panel; tweak once, does not overwrite main panel. -
Shift + drag folder → recursive add, respects include/exclude wildcards in Settings. -
Alt + drag → forces “Prepare Files” dialog (metadata preview, audio map picker).
Scenario: YouTube creator needs vertical 9:16 exports. In Filters → Crop he sets iw/1:ih*0.8:(ow-iw)/2:0, saves as preset “Shorts-crop”. Now he Alt-drags new uploads, picks that preset, queues 20 files without touching the main panel again.
Queue & snapshot mechanics: why every job carries its own DNA
Core question answered: “If I change the UI after adding tasks, will earlier jobs be affected?”
No. The moment a file hits the queue, 3FUI serialises the entire parameter set into a small JSON beside the executable (Presets\QueueSnap\{GUID}.json). Jobs therefore:
-
can be re-ordered, paused, resumed, or sent to different PCs (copy snap + media) -
never mutate when you tweak the main panel later -
can be double-clicked to load their values back into the UI for clone-and-modify workflows
Reflection: Early prototypes kept one global state; users lost three-day encodes when someone bumped CRF from 22 to 24 at hour 47. Snapshots waste 2 kB per job, but save petabytes of re-encoding time.
Hardware encoding matrix: 40+ codecs, pick in 30 seconds
Core question answered: “Which encoder gives me the best speed/quality on my exact GPU?”
| Codec Family | Software | Intel QSV | NVIDIA NVENC | AMD AMF |
|---|---|---|---|---|
| H.264 | libx264 (CRF 23) | h264_qsv | h264_nvenc | h264_amf |
| H.265 | libx265 (CRF 24) | hevc_qsv | hevc_nvenc | hevc_amf |
| AV1 | libsvtav1 (CRF 32) | av1_qsv | av1_nvenc | av1_amf |
Recommended quality values (visually lossless on 1080p)
-
libsvtav1CRF 32–34 -
av1_nvencCQ 36 (RTX 40- or 50-series) -
libx265CRF 23–25 -
hevc_nvencCQ 26–28
Scenario: A wedding studio shoots 150 GB of 4K 60 p H.264 ALL-I. On an RTX 5070 workstation they choose av1_nvenc CQ 36, keep original 10-bit, enable loudnorm. Overnight the 120-minute footage drops to 28 GB, VMAF ≈ 94, and editors can scrub immediately on a laptop—no proxy needed.
Colour-space & HDR: from “why grey” to “exactly the same red”
Core question answered: “My export looks washed out—what buttons actually fix it?”
-
Check source metadata (MediaInfo or ffprobe inside 3FUI). -
In 3FUI → Colour Space tab, copy three values: -
Matrix ( bt709/bt2020nc) -
Primaries ( bt709/bt2020) -
Transfer ( bt709/smpte2084for PQ)
-
-
If source is HDR and target SDR, enable either: -
zscalefor fast 1-pass, or -
libplacebo=tone_mapping=autofor scene-detect + contrast protection.
-
-
Export in 10-bit yuv420p10leto avoid gradient banding.
Scenario: Drone HDR clip in HLG. Creator chooses libplacebo, keeps 10-bit, uploads to WeChat Moments. SDR phones show identical contrast to original, no “grey veil” complaints in comments.
Plugin development: extending the cockpit without recompiling the plane
Core question answered: “I need a custom panel that talks to our asset DB—how deep must I dive?”
Surprisingly shallow. Plugins are plain .NET 10 class libraries that:
-
expose a public static void Entry()method -
receive four delegate hooks (WinForm, WPF, queue-by-args, queue-by-preset) -
are loaded by reflection at start-up if they carry .3fui.dllsuffix
Mini-tutorial (C#)
public static class Entry
{
public static Action<string,Control> AddWinForm; // injected by host
public static void SetAddWinForm(object d) => AddWinForm = (Action<string,Control>)d;
public static void Entry() // called by 3FUI on start-up
{
var panel = new UserControl();
panel.Controls.Add(new Label(){Text="Hello from plugin"});
AddWinForm?.Invoke("Asset DB", panel);
}
}
Build → rename MyPlugin.dll to MyPlugin.3fui.dll → drop into Plugin folder → restart. A new dropdown entry “Asset DB” appears.
Scenario: Enterprise localisation team writes a plugin that queries internal CMS for subtitle files. When an artist drops a trailer, the plugin auto-fetches zh-CN, es-ES, ja-JP .srt, adds -vf subtitles= filters, then queues three language versions—zero manual browsing.
Remote control & automation: turning one desktop into a farm node
Core question answered: “Can I send jobs from my MacBook to a headless Windows box running 3FUI?”
Yes. Enable “Remote Invocation” in Settings → specify UDP port (default 10591). The payload syntax is identical to CLI:
-i \\NAS\clip.mov -3fui_file B站二压 -report
Send the string as UTF-8 UDP packet; 3FUI replies with JSON {Status:"Queued",Id:"{GUID}"}. You can:
-
schedule PowerShell loops to scan hot-folders -
integrate into Adobe Premiere export hooks -
run dozens of headless mini-PCs under a desk—no RDP needed
Reflection: The first remote prototype used TCP. Corporate firewalls killed it. Switching to UDP made every security team happy, and packets still arrive in <1 ms on a LAN—another reminder that “correct” protocol is the one that passes through real-world networks.
Troubleshooting top 10: the errors the author predicted you’d hit
Core question answered: “Which ‘obvious’ checks eliminate 90% of forum posts?”
-
“Unknown encoder ‘libx264’” → you downloaded LGPL FFmpeg; grab GPL. -
SingleFile refuses to start → install .NET 10 Desktop Runtime x64. -
Progress bar stuck at 47% → Windows sleep + no monitor; tick “Prevent display sleep”. -
Admin mode drag-drop fails → Windows security by design; drop admin rights or use command line. -
Output 0 byte → output path contains full-width spaces or emojis. -
NVENC fails after 8 parallel jobs → consumer card limit; use two cards or Quadro. -
Queue JSON shows red “X” → source file renamed after enqueue; re-drag. -
Colours look grey → forgot to set -colorspacematching source. -
Can’t load plugin → built against .NET 8; retarget to .NET 10. -
“Where is my watermark?” → 3FUI never writes one; if you need it, add -vf drawtextyourself.
Action Checklist / Implementation Steps
-
[ ] Pick SingleFile build (or ReadyToRun if offline PCs) -
[ ] Download GPL FFmpeg, copy three exes into 3FUI folder -
[ ] Launch, drag 5 test files, encode with libsvtav1CRF 32 → success -
[ ] Create preset “My-YouTube-Shorts” (crop, loudnorm, subtitle burn) -
[ ] Hold Ctrl + drag new vertical video → temporary panel → choose preset → queue -
[ ] Enable remote UDP, send one packet from laptop → confirm job appears -
[ ] (Optional) Write a plugin that fetches subtitles from your CMS and queues multi-language versions
One-page Overview
3FUI is a Windows GUI that does nothing except hand parameters to FFmpeg, but it does so with surgical precision: unlimited queue, per-job snapshots, hardware acceleration support for 40+ encoders, and a plugin API that lets you bolt on asset-management layers. There are zero canned presets, so you must know why CRF 23 differs from CQ 28—but if you do, you can batch-hundreds of files while you sleep, remote-control a room of PCs, and still keep full FFmpeg transparency. Install runtime, drop GPL FFmpeg, drag files, go to bed.
FAQ
-
Q: Does 3FUI work on macOS or Linux?
A: Not natively; some users run it via Wine (seedoc/linux.md). -
Q: Is there a Mac Apple Silicon build?
A: No, and the author states he can’t afford Apple hardware—community ports welcome. -
Q: Can I sell my plugin commercially?
A: Yes; the host uses reflection, so the MIT licence does not extend to your code. -
Q: Why no dark-mode toggle?
A: Interface is owner-drawn dark-only; the author claims light themes hurt his eyes. -
Q: Maximum number of jobs?
A: Limited only by RAM; one user reported 25,000 queued without crash. -
Q: Does it support 8K 120 fps?
A: If FFmpeg can parse the frame, 3FUI can feed it—hardware permitting. -
Q: Where are the logs?
A:Logsfolder under executable; click “Capture N errors” in queue for instant open.
