Skip to content

About

Free Windows GUI for QTGMC deinterlacing of analog video captures (VHS, Hi8, Video8). Drag-and-drop simplicity — perfect for preparing footage for Topaz Video AI.

Resources

Stars

13 stars

Watchers

0 watching

Forks

Latest commit

 

History

145 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

We have produced a new version of the software in Rust with more features and a better interface. Try the 2.0 version [here]:(https://github.com/Video-Capture-Guide/VCG-Deinterlacer-2.0)

VCG Deinterlacer

Version 1.8.0 — by VideoCaptureGuide

A free Windows tool for deinterlacing VHS, Hi8, Video8, and MiniDV tape captures using QTGMC — the industry-standard motion-compensated deinterlacer. Guided step-by-step wizard interface with automatic video analysis.


Download

There are four ways to get VCG Deinterlacer. Not sure which is for you? Jump to Which download should I pick? — for most people it's option 1.

1. Single EXE — the simple choice Download VCG_Deinterlacer.exe — 1.8.0 — one Windows file. Save it anywhere and double-click; there is nothing to unzip or install. On first launch the app automatically downloads FFmpeg and VapourSynth (~136 MB, one time only).

2. Standalone ZIP — if your antivirus blocks the single EXE On the Releases page, download VCG_Deinterlacer_1.8.0_standalone.zip. This is the same program, just delivered as a folder of files instead of one self-contained EXE. Some antivirus tools flag the single EXE as a false positive because of the way it unpacks itself in memory when it starts; the standalone version doesn't do that, so scanners usually leave it alone. Extract the ZIP, open the folder it creates, and double-click VCG_Deinterlacer.exe inside. Keep the whole folder together — the EXE needs the files next to it to run. First launch still auto-downloads FFmpeg and VapourSynth.

3. Build it yourself from source Prefer to compile your own binary? Grab the source — the Source code (zip) link on the Releases page, or git clone this repo — and run build_vcg_deinterlacer.bat. You get the same VCG_Deinterlacer.exe as option 1. See BUILD_INSTRUCTIONS.md for the full steps.

4. Run the Python script directly If you already have Python 3.12 and the required packages installed, you can run the app straight from the source file: python vcg_deinterlacer_v130.py. The dependency list is in requirements.txt (pip install -r requirements.txt). FFmpeg and VapourSynth are still fetched automatically on first launch if they aren't already present.

Which download should I pick?

If you… Download this Why
Just want it to work (most people) 1. Single EXE One file, double-click, done.
Got a virus/"trojan" warning on the EXE, or your antivirus deleted it 2. Standalone ZIP Same app, packaged so it doesn't trip antivirus false positives. No settings to change.
Are a developer, or want to read or modify the code 3. Source (build it) or 4. Run the .py Full source; compile your own EXE or run it in Python.

About the antivirus warnings: VCG Deinterlacer is safe and open-source — you can read every line of it in this repo. The single EXE is built with Nuitka, which packs the whole app into one file; a few antivirus engines mistake that packing for malware and show a generic alert (names like Trojan.Win32.Agent.*). It's a known false positive, not a real detection. If you hit it, use the Standalone ZIP (option 2), which avoids the packing that causes it.


Features

  • QTGMC deinterlacing — the gold standard for analog video restoration
  • Automatic first-run setup — downloads FFmpeg and VapourSynth automatically on first launch
  • Automatic video analysis — detects noise level, edge halos, color cast, color bleeding, and brightness levels, with quantified scores shown next to every recommendation and notes explaining where the analysis samples were taken from
  • Guided wizard with sidebar navigation — walks you through every setting with explanations; a navigation sidebar shows every step, what's done, and what's next, and lets you click any visited step to jump back to it
  • Plain-language settings summary — the final page recaps everything that will be applied (source, field order, deinterlacing method, crop, colour matrix, output, and any enhancements you enabled) so you can double-check before processing
  • Field order detection with manual lock — auto-detects TFF/BFF for single files via FFmpeg idet; a field order you set by hand is locked in and never overwritten by background detection
  • Inverse Telecine (IVTC) — detects 3:2 (NTSC) and 2:2 (PAL) film pulldown on DVD/MPEG-2 sources and can reconstruct the original progressive frames instead of deinterlacing
  • Trim / segment export — keep or cut frame-accurate segments before processing, with a preview scrubber, timecode entry, and the choice of joining kept parts into one file or exporting one file per segment
  • AVCHD and HDV support — automatically detects and processes interlaced HD camcorder footage (.mts, .m2ts, .m2t, .ts) with a dedicated HD wizard path
  • 10-bit and non-standard source support — 10-bit or unusual YUV/grayscale sources (e.g. DVD-rip MKVs) are auto-detected and converted to 8-bit at load time, with a one-line notice
  • Batch processing — queue multiple files and process them overnight (auto-detection is disabled for batches, since each file may differ — you set the field order manually)
  • Multiple output formats — ProRes HQ, H.264, FFV1 (lossless), and more
  • PAR correction — automatically converts non-square pixels to square for NTSC, PAL, and HDV sources
  • 16-bit pipeline — the full processing chain (QTGMC, BM3D, dehalo, colour correction, levels) runs at 16-bit precision; fmtconv error-diffusion dithering converts to the output bit depth at the very end, eliminating banding in skies and fades
  • Colorspace tagging — auto-detects the correct matrix (BT.601 for SD, BT.709 for HD), tags VapourSynth frames and the output container, and uses the same matrix for all in-app video scopes so scope colors are accurate
  • Temporal denoising — BM3D (with KNLMeansCL/SMDegrain fallback) for noisy VHS footage
  • Dehalo — removes edge halos from VHS sharpening circuits and camcorder edge enhancement, with automatic halo analysis and a quantified halo score
  • Upscaling — optional upscale to HD presets with NNEDI3 (SD sources only); when the result is HD-sized, colours are converted BT.601 → BT.709 at full precision so the upload displays correctly on YouTube instead of looking dark and oversaturated
  • Mono-to-stereo — optional fix if your video has audio in only one channel
  • Color correction — auto-detects and corrects color casts and saturation issues
  • Video scopes — Vectorscope and RGB Histogram on the Color Analysis page; RGB Parade with frame scrubber on the Video Levels page
  • Watermark — optional text or logo overlay (position, size, opacity)
  • Film grain — optional AddGrain overlay applied at the final resolution; keeps denoised footage from looking plasticky and prevents banding after YouTube's re-compression
  • Comparison video — 20-second side-by-side original vs. enhanced clip: 10 s normal view + 10 s at 300% zoom
  • Drag and drop — drop video files directly onto the app window, including MTS and AVCHD files
  • Diagnostic log — optional troubleshooting log saved alongside the output (VCG version, system info, ffprobe data, detected parameters, the generated VapourSynth script, the FFmpeg command, and full output) to email if you hit an error
  • Portable — no installer, no UAC prompt, no admin rights required

Screenshots


Welcome screen

Step 1 — Select video files

Step 1 — File loaded and ready

Step 2 — Source details (auto-detected)

Step 2 — Quick-process option

Step 3 — Noise removal analysis

Step 3 — Color analysis

Step 3 — Video levels

Step 4 — Choose output format

Step 4 — Processing complete

System Requirements

  • Windows 10 or 11 (64-bit)
  • Internet connection on first launch (to download FFmpeg and VapourSynth, ~136 MB)

FFmpeg and VapourSynth are downloaded automatically into a _deps\ folder next to the EXE. No system-wide installation is required.


Installation (ready-to-run EXE)

  1. Download VCG_Deinterlacer_1.8.0.exe from the Releases page
  2. Save it to any folder (e.g. C:\Tools\VCG_Deinterlacer\)
  3. Double-click VCG_Deinterlacer.exe
  4. On first launch, the First Run Setup window appears and downloads the required tools (~136 MB). This only happens once.
  5. After setup completes, the main wizard opens automatically.

On all future launches the wizard opens directly with no setup step.

Antivirus blocked the download? Use the Standalone ZIP instead (option 2 in Download) — extract it and run VCG_Deinterlacer.exe from inside the folder, keeping the folder intact. Prefer to compile the EXE yourself or run the .py directly? See the Download section above and BUILD_INSTRUCTIONS.md.


Usage

  1. Launch VCG Deinterlacer from the folder where you extracted it
  2. Click START on the welcome screen
  3. Select File — drag and drop or browse for your video file(s)
  4. Source — confirm format (NTSC/PAL), field order (TFF/BFF), crop settings, and source color matrix (BT.601 auto-selected for SD; BT.709 for HD). Field order and telecine are auto-detected for single files; for multi-file batches auto-detection is disabled (each file may differ) and you set the field order manually
  5. Trim — output the entire video (default), or keep/cut frame-accurate segments (single file only)
  6. Y/C Delay — correct horizontal chroma shift if present
  7. Noise — review the automatic noise analysis (noise score shown) and choose a denoising level
  8. Dehalo — review the automatic halo analysis (halo score shown) and choose a dehalo level
  9. Upscale — optionally upscale SD sources with NNEDI3
  10. Color Cast — review color balance and apply correction if needed
  11. Levels — review luma levels on the RGB Parade and apply adjustment if needed
  12. Audio — choose mono-to-stereo mix options if applicable
  13. Watermark — optionally add a text or logo watermark
  14. Add Grain — optionally add fine film grain (masks the "plasticky" look of denoised video and prevents banding on YouTube)
  15. Dithering — leave output dithering at its recommended default, or adjust the method
  16. Finalize — choose output format, review the plain-language Summary of settings card, and click Process

All Advanced steps (5–15) are optional — the sidebar marks them as such, and the Process Now shortcut after the Source step skips straight to Finalize with safe defaults.

Processing time depends on video length and your CPU. A one-hour VHS capture typically takes 2–4 hours.


Output Formats

Format Extension Best For
ProRes HQ .mov Editing in DaVinci Resolve, Premiere, Final Cut
H.264 .mp4 Sharing, uploading to YouTube
FFV1 .mkv Archiving (lossless)
DNxHD 115 .mov Editing in Avid

Field Order Reference

Source Format Field Order
VHS (most decks) TFF (Top Field First)
S-VHS TFF
Video8 / Hi8 TFF
MiniDV / Digital8 BFF (Bottom Field First)
Betacam TFF

If motion looks jerky or stuttery after processing, try switching the field order.


Troubleshooting

First Run Setup fails to download

  • Check your internet connection
  • Try disabling your VPN or firewall temporarily
  • You can download the tools manually — see the instructions shown in the setup window

The app opens but processing fails immediately

  • Delete the _deps\ folder next to the EXE and re-launch to re-run the setup
  • Check that _deps\ffmpeg\ffmpeg.exe and _deps\vs\vspipe.exe exist

"Could not load source" error

  • Make sure _deps\vs\plugins64\LSMASHSource.dll exists
  • Try re-running the setup by deleting the _deps\ folder

Processing is very slow

  • QTGMC is CPU-intensive — this is normal
  • Close other applications to free up CPU
  • Consider reducing the denoising level if enabled

Output video has wrong aspect ratio

  • Enable PAR correction in the Source step
  • Make sure the correct format (NTSC/PAL) is selected

Audio is missing from output

  • Check the Audio step — ensure the correct audio option is selected
  • Verify the source file has an audio track using MediaInfo

Technical Details

Processing Pipeline (v1.8.0)

Every encode runs through a 16-bit VapourSynth pipeline. The source is lifted to 16-bit integer at the very start (fmtc.bitdepth) and all operations — QTGMC, BM3D, FineDehalo, colour cast correction, levels — run natively at that depth with no mid-chain round-trips to 8-bit. 10-bit or non-standard sources are converted to 8-bit YUV at load time before anything else runs.

Optional film grain (AddGrain) is applied at the final resolution — after PAR correction and any NNEDI3 upscale — so the grain stays pixel-fine rather than being enlarged by the upscaler.

At the end, fmtconv error-diffusion dithering (fmtc.bitdepth, dmode=3) converts back to the codec's native depth:

  • ProRes HQ → 10-bit (fills the container fully)
  • H.264, FFV1, and all other formats → 8-bit

This eliminates the banding in skies, fades, and gradients that is common in tape captures processed through an 8-bit chain.

All output files are tagged with the correct colorspace metadata (BT.601 for SD, BT.709 for HD) in both the VapourSynth frame properties and the FFmpeg container flags — including a setparams filter so the primaries and transfer tags survive the y4m pipe. The in-app video scopes use the same matrix, so scope colors match the actual video signal.

When an SD source is upscaled to an HD size (final height ≥ 720), a real BT.601 → BT.709 pixel conversion runs after the NNEDI3 upscale at full 16-bit precision, and the output is retagged BT.709. This is what HD platforms like YouTube expect, so the upload no longer looks dark and oversaturated. If you keep the original SD size, nothing changes — it stays BT.601.

If a film telecine pattern is detected on a DVD/MPEG-2 source, the IVTC path uses vivtc.VFM field matching (plus VDecimate for NTSC 3:2 only — PAL 2:2 keeps all 25 frames) to reconstruct the original progressive frames instead of running QTGMC.

QTGMC Configuration

VCG Deinterlacer uses a conservative QTGMC configuration designed to preserve the original analog character without over-processing:

Sharpness=0.1    (very mild — most presets use 0.2–1.0)
Lossless=2       (preserves original pixels where no MC is needed)
SourceMatch=3    (highest quality source matching)
NoiseProcess=2   (temporal denoise within QTGMC)

Full QTGMC parameter details are available in the app under Help → About VCG Deinterlacer.


Building from Source

See BUILD_INSTRUCTIONS.md for full build instructions.

Quick start:

pip install -r requirements.txt
build_vcg_deinterlacer.bat

Requires Python 3.10+, Visual Studio Build Tools (or MinGW64).


License

MIT License — see LICENSE.txt for full terms.

This software is free and open source. Third-party components (FFmpeg, VapourSynth, havsfunc) are subject to their own licenses.


Version History

Version Date Notes
1.8.0 2026-10-05 Film sources are now identified from their picture content: the telecine scan samples several segments spread across the whole file instead of only the opening seconds (so a studio logo or CGI bumper at the head of a film transfer no longer makes it read as video), reads the repeated-field cadence that is the mechanical signature of 3:2 pulldown in addition to the progressive-frame share, and no longer assumes a DV-codec file must be camcorder video — analog-to-DV captures of film are detected correctly; when a film source is found, Frame Rate Mode is ghosted out and the output is the native 23.976 fps (NTSC) / 25 fps (PAL); a new Override detection button (plus Re-scan) lets you force film or video by hand on any source, including batches; and an already-progressive source is now detected and selects the Progressive field order, which skips deinterlacing while every other restoration step still applies — a progressive 1080p file is also labelled HD Progressive (1920×1080p) instead of being announced as 1920×1080i, and 50/60 fps sources pick the right video standard automatically
1.7.9 2026-09-11 New Live Preview window renders the real processed result on any frame before you commit to a full render — with a Before/After toggle (Space), frame scrubbing, and 1×/2×/4× zoom, showing only the steps visited so far; new Frame Rate Mode choice on the Source Details page (double-rate "bob" 59.94/50 fps vs single-rate 29.97/25 fps); output is now stamped with the frame rate the pipeline actually produced, fixing wrong playback speed and audio drift on single-rate and film (IVTC) renders; new Help → Check for Updates; mouse-wheel scrolling now works across the whole page and pages open at the top; output files are version-tagged (e.g. …_VCGD179)
1.7.8 2026-09-09 A failed audio-mux pass can no longer destroy a finished render: on mux failure the truncated file is removed and the intact video-only render is restored (with the audio WAV kept for manual muxing); a pre-flight free-disk-space check skips the mux early if the drive can't hold the second copy; and an ffprobe integrity check verifies the output before declaring success, so a truncated file is now correctly reported as FAILED instead of SUCCESS
1.7.7 2026-09-07 App version now shown prominently on the welcome/splash screen, in accent colour beneath the title, so you can confirm your build at a glance
1.7.6 2026-09-01 Manual field order now locks in and is never overwritten by background auto-detection; auto-detection of field order and telecine disabled for multi-file batches (with an on-screen note), so batch badges no longer hang on "Detecting…"; new plain-language settings summary on the Output & Process page
1.7.5 2026-08-30 Upscaled SD video now gets a real BT.601 → BT.709 pixel conversion when the result is HD-sized, so colours are correct on YouTube
1.7.4 2026-08-02 Choose your own preview frame on the Y/C Delay page; live film-grain preview with 1×/2×/4× zoom; wider, more visible scrollbar; diagnostic log text points to the support email
1.7.3 2026-07-08 Fixed a crash when applying full overscan / manual top-bottom crop to 4:2:0 sources (DVD / MPEG-2 rips) — the vertical crop now runs after deinterlacing
1.7.2 2026-07-07 Fixed PAL encodes failing at the FFmpeg stage (invalid color_trc); output files now carry correct primaries/transfer tags (all formats); fixed a false "reverse telecine" prompt on interlaced PAL; PAL IVTC no longer drops every 5th frame
1.7.1 2026-07-06 10-bit and non-standard sources auto-converted to 8-bit at load time; Inverse Telecine fixed to work with the 16-bit pipeline (field-match on an 8-bit copy via VFM clip2)
1.7.0 2026-07-04 Sidebar wizard navigation with clickable visited steps; Trim / Segment Export page (keep or cut segments, join or split output); Watermark, Add Grain, and Output Dithering split into separate pages; film grain fixed — correct strength (16× too strong before) and applied at final resolution
1.6.0 2026-06-29 16-bit pipeline; fmtconv error-diffusion output dithering (auto, ProRes 10-bit); colorspace/matrix tagging (BT.601/BT.709 auto-select); correct scope colors; Source Color Matrix dropdown on Source Details page
1.5.0 2026-06-10 Dehalo page with halo analysis; Watermark page + film grain; BM3D denoising; RGB Parade; quantified analysis scores; sampling notes; reworked comparison video (10 s + 10 s at 300%)
1.4.1 2026-06-07 .MOD file support; 16:9 widescreen PAR fix; crop page recommendation
Beta-02b 2026-04-05 Fix RGB source support; faster launch via persistent cache dir
Beta-02 2026-03-28 Portable ZIP; first-run auto-setup; no installer
Beta-01 2026-03-23 Inno Setup installer; manual FFmpeg/VapourSynth install
Beta 0.4 2026-03-17 First working installer build
Beta 0.2 2026-03-09 Initial release

About

VCG Deinterlacer is developed by VideoCaptureGuide — a YouTube channel dedicated to VHS capture, tape preservation, equipment reviews, and analog video restoration tutorials.

Subscribe for tutorials on getting the most out of your tape archive.

About

Free Windows GUI for QTGMC deinterlacing of analog video captures (VHS, Hi8, Video8). Drag-and-drop simplicity — perfect for preparing footage for Topaz Video AI.

Resources

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages