Simple GUI toolset for FFmpeg
Queue View Improvements: - Fix Windows-specific button lag after conversion completion - Remove redundant refreshQueueView() calls in button handlers - Queue onChange callback now handles all refreshes automatically - Add stopQueueAutoRefresh() before navigation to prevent conflicts - Reduce auto-refresh interval from 500ms to 1000ms - Result: Instant button response (was 1-3 second lag on Windows) Main Menu Performance: - Implement 300ms throttling for main menu rebuilds - Cache jobQueue.List() to eliminate multiple expensive copies - Smart conditional refresh: only update when history actually changes - Add refreshMainMenuThrottled() and refreshMainMenuSidebar() - Result: 3-5x improvement in responsiveness, especially on Windows Queue Position Display: - Fix confusing priority labeling in queue view - Change from internal priority (3,2,1) to user-friendly positions (1,2,3) - Display "Queue Position: 1" for first job, "Position: 2" for second, etc. - Apply to both Pending and Paused jobs Remux Safety System: - Add comprehensive codec compatibility validation before remux - Validate container/codec compatibility (MP4, MKV, WebM, MOV) - Auto-detect and block incompatible combinations (VP9→MP4, etc.) - Automatic fallback to re-encoding for WMV/ASF and legacy FLV - Auto-fix timestamp issues for AVI, MPEG-TS, VOB with genpts - Add enhanced FFmpeg safety flags for all remux operations: * -fflags +genpts (regenerate timestamps) * -avoid_negative_ts make_zero (fix negative timestamps) * -map 0 (preserve all streams) * -map_chapters 0 (preserve chapters) - Add codec name normalization for accurate validation - Result: Fool-proof remuxing with zero risk of corruption Technical Changes: - Add validateRemuxCompatibility() function - Add normalizeCodecName() function - Add mainMenuLastRefresh throttling field - Optimize queue list caching in showMainMenu() - Windows-optimized rendering pipeline Reported-by: Jake (Windows button lag) Reported-by: Stu (main menu lag) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| assets/logo | ||
| cmd/player_demo | ||
| docs | ||
| internal | ||
| scripts | ||
| .gitattributes | ||
| .gitignore | ||
| author_dvd_functions.go | ||
| author_module.go | ||
| config_helpers.go | ||
| DONE.md | ||
| filters_module.go | ||
| FyneApp.toml | ||
| go.mod | ||
| go.sum | ||
| inspect_module.go | ||
| main.go | ||
| main.go.backup-before-inspect-extraction | ||
| merge_config.go | ||
| naming_helpers.go | ||
| platform.go | ||
| PLAYER_PERFORMANCE_ISSUES.md | ||
| README.md | ||
| REFACTORING_PROMPT_FOR_OPENCODE.md | ||
| rip_module.go | ||
| setup-windows.bat | ||
| subtitles_module.go | ||
| thumb_module.go | ||
| TODO_EXTRACTION_NOTES.md | ||
| TODO.md | ||
| upscale_module.go | ||
| VideoTools.desktop | ||
| WINDOWS_BUILD_PERFORMANCE.md | ||
VideoTools - Video Processing Suite
What is VideoTools?
VideoTools is a professional-grade video processing application with a modern GUI. It specializes in creating DVD-compliant videos for authoring and distribution.
Key Features
DVD-NTSC & DVD-PAL Output
- Professional MPEG-2 encoding (720×480 @ 29.97fps for NTSC, 720×576 @ 25fps for PAL)
- AC-3 Dolby Digital audio (192 kbps, 48 kHz)
- DVDStyler compatible (no re-encoding warnings)
- PS2 compatible (PS2-safe bitrate limits)
- Region-free format (works worldwide)
Batch Processing
- Queue multiple videos
- Pause/resume jobs
- Real-time progress tracking
- Job history and persistence
Smart Features
- Automatic framerate conversion (23.976p, 24p, 30p, 60p, VFR → 29.97fps)
- Automatic audio resampling (any rate → 48 kHz)
- Aspect ratio preservation with intelligent handling
- Comprehensive validation with helpful warnings
Quick Start
Installation (One Command)
bash scripts/install.sh
The installer will build, install, and set up everything automatically with a guided wizard!
After installation:
source ~/.bashrc # (or ~/.zshrc for zsh)
VideoTools
Alternative: Developer Setup
If you already have the repo cloned (dev workflow):
cd /path/to/VideoTools
bash scripts/build.sh
bash scripts/run.sh
For detailed installation options, troubleshooting, and platform-specific notes, see INSTALLATION.md. For upcoming work and priorities, see docs/ROADMAP.md.
How to Create a Professional DVD
- Start VideoTools →
VideoTools - Load a video → Drag & drop into Convert module
- Select format → Choose "DVD-NTSC (MPEG-2)" or "DVD-PAL (MPEG-2)"
- Choose aspect → Select 4:3 or 16:9
- Name output → Enter filename (without .mpg)
- Queue → Click "Add to Queue"
- Encode → Click "View Queue" → "Start Queue"
- Export → Use the .mpg file in DVDStyler
Output is professional quality, ready for:
- DVDStyler authoring (no re-encoding needed)
- DVD menu creation
- Burning to disc
- PS2 playback
Documentation
Getting Started:
- INSTALLATION.md - Comprehensive installation guide (read this first!)
For Users:
- BUILD_AND_RUN.md - How to build and run VideoTools
- DVD_USER_GUIDE.md - Complete guide to DVD encoding
For Developers:
- DVD_IMPLEMENTATION_SUMMARY.md - Technical specifications
- INTEGRATION_GUIDE.md - System architecture and integration
- QUEUE_SYSTEM_GUIDE.md - Queue system reference
Requirements
- Go 1.21+ (for building)
- FFmpeg (for video encoding)
- X11 or Wayland display server (for GUI)
System Architecture
VideoTools has a modular architecture:
internal/convert/- DVD and video encodinginternal/queue/- Job queue systeminternal/ui/- User interface componentsinternal/player/- Media playbackscripts/- Build and run automation
Commands
Build & Run
# One-time setup
source scripts/alias.sh
# Run the application
VideoTools
# Force rebuild
VideoToolsRebuild
# Clean build artifacts
VideoToolsClean
Legacy (Direct commands)
# Build
go build -o VideoTools .
# Run
./VideoTools
# Run with debug logging
VIDEOTOOLS_DEBUG=1 ./VideoTools
# View logs
go run . logs
Troubleshooting
- See BUILD_AND_RUN.md for detailed troubleshooting
- Check videotools.log for detailed error messages
- Use
VIDEOTOOLS_DEBUG=1for verbose logging
Professional Use Cases
- Home video archival to physical media
- Professional DVD authoring workflows
- Multi-region video distribution
- Content preservation on optical media
- PS2 compatible video creation
Professional Quality Specifications
DVD-NTSC
- Resolution: 720 × 480 pixels
- Framerate: 29.97 fps (NTSC standard)
- Video: MPEG-2 codec, 6000 kbps
- Audio: AC-3 stereo, 192 kbps, 48 kHz
- Regions: USA, Canada, Japan, Australia
DVD-PAL
- Resolution: 720 × 576 pixels
- Framerate: 25.00 fps (PAL standard)
- Video: MPEG-2 codec, 8000 kbps
- Audio: AC-3 stereo, 192 kbps, 48 kHz
- Regions: Europe, Africa, Asia, Australia
Getting Help
- Read BUILD_AND_RUN.md for setup issues
- Read DVD_USER_GUIDE.md for how-to questions
- Check videotools.log for error details
- Review documentation in project root