- Go 89.4%
- Shell 5.6%
- PowerShell 4.1%
- Batchfile 0.8%
For VIDEO_TS folder output, menu PGC CellPlayback sectors were never set (only the ISO code path had M5 patching). All menu cells stayed at FirstSector=0, LastSector=0, preventing players from finding menu video. Also sets VMGM_VOBS_Sector to VMG_Last_Sector+1 (non-zero) so libdvdread knows the VMGM VOB exists and opens VIDEO_TS.VOB for the menu domain. With VMGM_VOBS_Sector=0 libdvdread treats the menu VOB as absent, which causes a SIGABRT when the VM tries to play the first-play PGC. The fix computes per-menu sector offsets from individual MPG file sizes (which are sector-aligned because the native VOB muxer pads to 2048-byte boundaries), then regenerates the VMG IFO with correct values. |
||
|---|---|---|
| .forgejo/workflows | ||
| .github/workflows | ||
| .opencode/plans | ||
| _fyne@5110757b69 | ||
| assets | ||
| cmd | ||
| docs | ||
| internal | ||
| packaging | ||
| qr-demo | ||
| scripts | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| about_module.go | ||
| AGENTS.md | ||
| audio_module.go | ||
| author_dvd_functions.go | ||
| author_menu.go | ||
| author_menu_preview.go | ||
| author_module.go | ||
| burn_linux.go | ||
| burn_module.go | ||
| burn_windows.go | ||
| compare_module.go | ||
| convert_player_native.go | ||
| deps_dialog_module.go | ||
| DONE.md | ||
| enhancement_module.go | ||
| filters_module.go | ||
| fonts_embed.go | ||
| FyneApp.toml | ||
| go.mod | ||
| go.sum | ||
| icons_embed.go | ||
| inspect_module.go | ||
| inspect_module_stub.go | ||
| locale_module.go | ||
| logo_embed.go | ||
| main.go | ||
| mainmenu_module.go | ||
| merge_config.go | ||
| naming_helpers.go | ||
| native_media.go | ||
| native_media_stub.go | ||
| platform.go | ||
| player_module.go | ||
| queue_module.go | ||
| README.md | ||
| rip_module.go | ||
| settings_module.go | ||
| subtitles_module.go | ||
| thumbnail_config.go | ||
| thumbnail_module.go | ||
| TODO.md | ||
| update_linux.go | ||
| update_windows.go | ||
| upscale_module.go | ||
| upscale_player_native.go | ||
| upscale_player_stub.go | ||
| VERSION | ||
| video_pane_native.go | ||
| video_pane_stub.go | ||
VideoTools - Video Processing Suite
What is VideoTools?
VideoTools is a desktop video processing application built on FFmpeg. It provides a graphical interface for converting, inspecting, and preparing video.
It includes tools for video conversion, batch processing, media inspection, merging, filtering, audio extraction, thumbnail generation, ripping, DVD-compliant output, and upscaling where supported.
Project Status
This project is under active development, and many documented features are not yet implemented.
For a clear, up-to-date overview of what is complete, in progress, and planned, please see our Project Status Page. This document provides the most accurate reflection of the project's current state.
Builds
- Daily (dev): https://git.leaktechnologies.dev/Leak_Technologies/VideoTools
- Stable (public): https://github.com/LeakTechnologies/VideoTools
Capabilities
- Video conversion via FFmpeg
- Queue-based batch processing
- Media inspection and analysis
- Merge, filters, and audio extraction
- Thumbnail generation
- Compare playback
- DVD authoring, encoding, and ripping tools
- Settings for language and hardware acceleration
- Optional AI-assisted upscaling (where supported)
Codecs and Frame Rates
Preset output formats:
- MP4: H.264, H.265, AV1
- MOV: H.264, H.265, ProRes
- MKV: Remux (copy), H.265, AV1
- WebM: VP9, AV1
- DVD: NTSC/PAL (MPEG-2)
Frame rate targets:
- Source, 23.976, 24, 25, 29.97, 30, 50, 59.94, 60
- Optional motion interpolation for frame-rate changes
- DVD presets lock to NTSC (29.97) or PAL (25) frame rates
Quick Start
Installation (One Command)
bash scripts/linux/install.sh
The installer will build, install, and set up shell aliases.
After installation:
source ~/.bashrc # (or ~/.zshrc, or ~/.config/fish/config.fish)
VideoTools
Alternative: Developer Setup
If you already have the repo cloned (dev workflow):
cd /path/to/VideoTools
bash scripts/linux/build.sh
bash scripts/linux/run.sh
For detailed installation options, troubleshooting, and platform-specific notes, see INSTALLATION.md. For upcoming work and priorities, see docs/ROADMAP.md.
DVD Workflow (Optional)
- 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
Documentation
Getting Started:
- PROJECT_STATUS.md - Current implementation status
- INSTALLATION.md - Comprehensive installation guide (read this first!)
- docs/README.md - Documentation index
- Forgejo Wiki - https://git.leaktechnologies.dev/leak_technologies/VideoTools/wiki
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
- localization-policy.md - Localization strategy and implementation guide
Localization
VideoTools ships with built-in support for multiple languages. Switch language in Settings → General. Aboriginal Sans is embedded for proper rendering of Unified Canadian Aboriginal Syllabics (Inuktitut).
| Language | Code | Script | Coverage |
|---|---|---|---|
| English (Canada) | en-CA |
Latin | 100% — source of truth |
| French (Canada) | fr-CA |
Latin | 98% |
| Inuktitut | iu |
Syllabics + Latin toggle | 11% — in progress |
Coverage is measured against the en-CA field count. The
iutranslation is an ongoing community effort; untranslated strings fall back to English automatically.
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 # bash
# source scripts/alias.zsh # zsh
# source scripts/alias.fish # fish
# 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
Getting Help
- Read BUILD_AND_RUN.md for setup issues
- Read docs/README.md for module and guide links
- Read DVD_USER_GUIDE.md for DVD-specific workflows
- Check videotools.log for error details
- Review documentation in project root