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?”

  1. 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
  2. Install runtime (only if SingleFile)

    • Grab “.NET 10 Desktop Runtime x64” from Microsoft, next-next-done.
  3. Fetch FFmpeg

    • gyan.dev → ffmpeg-git-full.7z or BtbN → ffmpeg-master-latest-win64-gpl.zip
    • Extract ffmpeg.exe, ffprobe.exe, ffplay.exe into the same folder as 3FUI
      OR drop them anywhere and add that folder to system Path.
  4. Launch FFmpegFreeUI.exe

    • No red “FFmpeg not found” banner = OK
    • Settings → Performance Monitor shows CPU/GPU temps = driver OK
  5. 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)

  1. Parameter tabs – identical to FFmpeg categories
    Video | Audio | Filters | Subtitle | Advanced
  2. Queue list – drag-files-here zone, every entry = frozen snapshot
  3. 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)

  • libsvtav1 CRF 32–34
  • av1_nvenc CQ 36 (RTX 40- or 50-series)
  • libx265 CRF 23–25
  • hevc_nvenc CQ 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?”

  1. Check source metadata (MediaInfo or ffprobe inside 3FUI).
  2. In 3FUI → Colour Space tab, copy three values:

    • Matrix (bt709 / bt2020nc)
    • Primaries (bt709 / bt2020)
    • Transfer (bt709 / smpte2084 for PQ)
  3. If source is HDR and target SDR, enable either:

    • zscale for fast 1-pass, or
    • libplacebo=tone_mapping=auto for scene-detect + contrast protection.
  4. Export in 10-bit yuv420p10le to 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.dll suffix

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?”

  1. “Unknown encoder ‘libx264’” → you downloaded LGPL FFmpeg; grab GPL.
  2. SingleFile refuses to start → install .NET 10 Desktop Runtime x64.
  3. Progress bar stuck at 47% → Windows sleep + no monitor; tick “Prevent display sleep”.
  4. Admin mode drag-drop fails → Windows security by design; drop admin rights or use command line.
  5. Output 0 byte → output path contains full-width spaces or emojis.
  6. NVENC fails after 8 parallel jobs → consumer card limit; use two cards or Quadro.
  7. Queue JSON shows red “X” → source file renamed after enqueue; re-drag.
  8. Colours look grey → forgot to set -colorspace matching source.
  9. Can’t load plugin → built against .NET 8; retarget to .NET 10.
  10. “Where is my watermark?” → 3FUI never writes one; if you need it, add -vf drawtext yourself.

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 libsvtav1 CRF 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

  1. Q: Does 3FUI work on macOS or Linux?
    A: Not natively; some users run it via Wine (see doc/linux.md).

  2. Q: Is there a Mac Apple Silicon build?
    A: No, and the author states he can’t afford Apple hardware—community ports welcome.

  3. Q: Can I sell my plugin commercially?
    A: Yes; the host uses reflection, so the MIT licence does not extend to your code.

  4. Q: Why no dark-mode toggle?
    A: Interface is owner-drawn dark-only; the author claims light themes hurt his eyes.

  5. Q: Maximum number of jobs?
    A: Limited only by RAM; one user reported 25,000 queued without crash.

  6. Q: Does it support 8K 120 fps?
    A: If FFmpeg can parse the frame, 3FUI can feed it—hardware permitting.

  7. Q: Where are the logs?
    A: Logs folder under executable; click “Capture N errors” in queue for instant open.