Releases: SysAdminDoc/VideoSubtitleRemover
Releases · SysAdminDoc/VideoSubtitleRemover
Release list
VideoSubtitleRemoverPro v3.17.1
What's new in v3.17.1
Detection & OCR
- RapidOCR 3.x support -- lifted pip cap from <3.0.0 to <4.0.0; hardened constructor and output parsing for v3.x API changes
- PP-OCRv6 auto-selection -- PaddleOCR 3.7+ defaults to PP-OCRv6 (34.5M params, +5.1% accuracy, 5.2x CPU speedup, 50-language single model)
- Vertical text detection fix -- coordinate mapping after 90-CCW rotation was mirrored/swapped; boxes now placed correctly
Security
VSR_SEEDVR2_CMDnow usesshlex.split()to prevent argument injection via environment variable- Crash reporter path regex extended to handle paths with spaces (prevents partial username leaks)
- Support bundle restricts collected paths to safe file extensions (.json, .md, .txt, .log)
Reliability
- Fixed preset save crash (
BUILTIN_PRESETSand_load_user_presetsmissing imports) - Fixed crash in queue item elapsed-time display (missing
datetimeimport) - Fixed
CAP_PROP_FRAME_COUNTreturning -1 bypassing the fallback (usedmax(1, ...)) - Catch
TclErroralongsideRuntimeErrorwhen posting to Tk from worker threads - A/B scrubber releases VideoCapture objects even if window construction fails
- JSON log handler now properly closes its file handle
- Corrupt settings.json backed up to
.bakbefore resetting to defaults
UX
- "Set region" button now appears directly in the preview action bar
- Preview height increased from 158px to 260px
- Drop area shows accurate text when TkinterDnD2 drag-drop is unavailable
- Status badge, progress bar, and accent stripe now forward clicks in queue cards
ModernButton.set_enabled(False)resets stale hover/pressed state- GitHub issue templates with OS/GPU fields and feature request form
Build
- CycloneDX SBOM (sbom.cdx.json) generated in release builds
- ProPainter mode documented as TBE+LaMa hybrid (not upstream NTU S-Lab weights)
- Architecture docs refreshed for post-module-split tree
VideoSubtitleRemoverPro v3.16.0
Automated build for v3.16.0.
Highlights
- RTX 50-series (Blackwell) support.
setup.pynow auto-detects 50-series cards (5050–5090, RTX PRO 6000, B100/B200/GB200) and installs PyTorch from the CUDA 12.8 (cu128) index. Older cu118/cu121 pins have no sm_120 kernels and error out or fall back to CPU. - Fixed a stale
torch==2.7.0README pin that conflicted with thetorch>=2.10.0floor (CVE-2026-24747). - Documented TV / limited color-range handling (
preserve_color_metadata, on by default).
Which download do I want?
- GPU users (especially RTX 50-series): run from source — clone the repo at this tag and follow the install steps so PyTorch lands on the right CUDA wheel (
cu128for Blackwell). The attached ZIP is a CPU-only PyInstaller build and will not use your GPU. - CPU users / quick try:
VideoSubtitleRemoverPro-v3.16.0-windows.zipis a self-contained Windows build — unzip and runVideoSubtitleRemoverPro.exe.
Note on antivirus / SmartScreen
This ZIP is an unsigned PyInstaller bundle that ships CUDA/torch and fetches model weights on first run. AV engines and SmartScreen commonly flag that pattern heuristically (large packed binary + network calls) as a false positive. Downloaded model weights are verified against vendored SHA-256 hashes. If your AV flags it, that's the heuristic — verify the ZIP hash and run from source if you prefer.
Full Changelog: v3.5.0...v3.16.0
Video Subtitle Remover Pro v3.5.0
Video Subtitle Remover Pro v3.5.0
Full rewrite from v2.0: real AI inpainting, multi-engine detection, professional DPI-responsive GUI, 20+ bug fixes.
AI Inpainting Engine
- Real LaMa neural inpainting via
simple-lama-inpainting-- dramatically better quality than OpenCV - STTN and ProPainter modes available with OpenCV inpainting fallback
- Image output quality preserved per-format (JPEG 95%, PNG compression 3, WebP 95%)
Multi-Engine Text Detection
- Automatic fallback chain: PaddleOCR > EasyOCR > OpenCV
- 12 languages: English, Chinese, Japanese, Korean, French, German, Spanish, Portuguese, Russian, Arabic, Hindi, Italian
- EasyOCR language code mapping for cross-engine compatibility
- Adjustable detection threshold (10-90%) in Advanced Settings
- Improved OpenCV fallback: dual-threshold bright/dark text detection with morphological merge
Professional GUI
- DPI-responsive layout -- Per-Monitor DPI V2, proportional grid columns, all widgets resize dynamically
- Unified panel design -- Input and Settings merged with subtle divider, no cluttered borders
- Dark-themed throughout -- combobox dropdowns, scrollbars, label frames, scale sliders all properly themed
- Subtitle region selector -- draw a rectangle on the first frame to define the target area
- Detection mask preview -- right-click queue item to visualize detected text regions
- Before/after comparison -- click completed items for side-by-side preview
- Video time-range -- process only a segment (start/end seconds)
- Folder input -- drag-drop folders or right-click drop zone to browse folders
- Batch progress bar with window title progress indicator
- Collapsible log panel with color-coded output and Open Log File button
- CRF quality slider in Advanced Settings
- Tooltips on key controls with full-path tooltips on filenames
- Retry Failed button to re-queue failed/cancelled items
- Double-click completed item opens the output file
- Taskbar flash + sound on batch completion
- Settings lock during processing
- Custom output directory with Browse/Reset
- Queue capped at 500 items
- Clean, professional spacing at any resolution from 900x650 to 4K
Settings & Persistence
- All settings saved to
%APPDATA%\VideoSubtitleRemoverPro\settings.json - Subtitle region, language, threshold, CRF quality, GPU selection all persist
- Crash logging to rotating log file (5MB) + MessageBox on fatal error
CLI
python -m backend.processor -i input.mp4 -o output.mp4 -m lama --lang en --crf 20 --threshold 0.4 --start 30 --end 120
Flags: --mode, --gpu, --lang, --crf, --threshold, --start, --end, --skip-detection, --fast, --no-audio
Infrastructure
- GitHub Actions CI/CD workflow for automated Windows builds
.gitignorefor model weights, venv, build artifactssetup.pyauto-installs EasyOCR + simple-lama-inpainting + PaddleOCR- All source files pure ASCII (zero unicode characters)
- Branch protection enabled on main
Bug Fixes (20+)
- Processing was simulated, never called real backend
- Backend path pointed to nonexistent file
- InpaintMode enum mismatch between GUI and backend
- Race conditions in queue mutations during processing
- Widget destruction during processing broke progress updates
- GPU selection never synced to config
- Duplicate files could be queued
- Output files silently overwritten (now auto-increments)
- Cancel only marked one item, remaining abandoned (now marks all)
- Elapsed timer dict iteration crash
- Settings lock disabled entire widget tree (now scoped)
- Closing window during processing left orphan threads
- nvidia-smi crash on malformed output
- EasyOCR language code mismatch (ch vs ch_sim)
- FFmpeg subprocess deadlock (added 10min timeout)
- Subtitle area not persisted in settings
- ModernButton fired on release outside bounds
- Region selector VideoCapture resource leak
- Division by zero on 0-frame video containers
- Batch progress bar stuck at 100% after completion
- Eager output directory creation (deferred to processing)