No description
  • Go 89.4%
  • Shell 5.6%
  • PowerShell 4.1%
  • Batchfile 0.8%
Find a file
Stu Leak 0557608c5a
Some checks are pending
Forgejo Publish Release / windows-package (push) Waiting to run
Forgejo Publish Release / publish-release (push) Blocked by required conditions
Forgejo Publish Release / linux-package (push) Successful in 3m53s
fix(dvd): patch menu PGC cell sectors and VMGM_VOBS_Sector for folder output
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.
2026-04-02 13:44:10 -04:00
.forgejo/workflows fix(ci): use gcc --print-file-name to embed absolute paths to libstdc++/libsupc++ in x265.pc 2026-03-29 13:28:21 -04:00
.github/workflows ci: replace MSYS2 with standalone winlibs GCC + BtbN shared FFmpeg 2026-03-26 03:10:10 -04:00
.opencode/plans Rename Thumb module to Thumbnail throughout codebase 2026-01-17 04:15:39 -05:00
_fyne@5110757b69 _fyne: painter debug callback + ClearFontCache for font rendering diagnostics 2026-03-25 03:35:03 -04:00
assets feat: bootstrap FFmpeg DLLs for native media engine 2026-03-21 13:55:40 -04:00
cmd Migrate About and docs links to Forgejo wiki 2026-03-07 02:42:08 -05:00
docs fix(dvd): patch menu PGC cell sectors and VMGM_VOBS_Sector for folder output 2026-04-02 13:44:10 -04:00
internal feat(queue): add elapsed and remaining time to queue and status bar 2026-04-02 08:25:31 -04:00
packaging fix(linux): align desktop Icon= name with icon filename for AppImage 2026-03-18 15:16:33 -04:00
qr-demo Migrate About and docs links to Forgejo wiki 2026-03-07 02:42:08 -05:00
scripts fix(ci): build x264/x265 from source as static-only to eliminate DLL deps 2026-03-28 16:55:54 -04:00
.gitattributes Track Whisper model with LFS 2026-01-05 22:10:57 -05:00
.gitignore ci: replace MSYS2 with standalone winlibs GCC + BtbN shared FFmpeg 2026-03-26 03:10:10 -04:00
.gitmodules build: add Fyne fork as submodule at _fyne 2026-03-20 13:54:13 -04:00
about_module.go release: close dev36 — code signing, about logo, scroll fix 2026-03-22 01:16:46 -04:00
AGENTS.md fix(dvd): patch menu PGC cell sectors and VMGM_VOBS_Sector for folder output 2026-04-02 13:44:10 -04:00
audio_module.go fix(author): persist settings tab state; sync disc title across tabs 2026-03-25 21:09:38 -04:00
author_dvd_functions.go feat(dvd): multi-page chapter menus with PGC support 2026-03-26 02:57:10 -04:00
author_menu.go fix(dvd): fix exported method names in native VOB writer 2026-04-02 07:43:00 -04:00
author_menu_preview.go Fix Preview tab button commands 2026-03-25 05:30:45 -04:00
author_module.go fix(dvd): patch menu PGC cell sectors and VMGM_VOBS_Sector for folder output 2026-04-02 13:44:10 -04:00
burn_linux.go fix(burn): remove orphaned duplicate code block and fix O_NONBLOCK reference in burn_linux.go 2026-04-02 05:58:15 -04:00
burn_module.go fix(ci): resolve type assertion, queue method, context import, and undefined symbol errors 2026-04-02 06:08:32 -04:00
burn_windows.go feat(burn): add platform-specific drive detection 2026-04-02 02:10:11 -04:00
compare_module.go fix(compare): resolve videoSource type mismatch; consistent loading 2026-03-26 18:35:56 -04:00
convert_player_native.go feat(player): add speed control and chapter navigation to shared player 2026-03-26 23:12:46 -04:00
deps_dialog_module.go Start Phase 3 by extracting deps dialog module UI 2026-03-07 02:40:29 -05:00
DONE.md fix(dvd): patch menu PGC cell sectors and VMGM_VOBS_Sector for folder output 2026-04-02 13:44:10 -04:00
enhancement_module.go dev34: extract enhancement module to internal/app/modules/enhancement 2026-03-15 13:50:26 -04:00
filters_module.go fix(ci): resolve type assertion, queue method, context import, and undefined symbol errors 2026-04-02 06:08:32 -04:00
fonts_embed.go feat(i18n): embed Aboriginal Sans font and wire localization into About dialog 2026-03-15 14:47:51 -04:00
FyneApp.toml Bump version to v0.1.1-dev39 2026-03-25 03:56:11 -04:00
go.mod chore: bump Go version to 1.26.1 in go.mod and bootstrap script 2026-03-27 10:02:27 -04:00
go.sum build: switch from vendored to local forked Fyne 2026-03-20 12:23:06 -04:00
icons_embed.go dev33: fix embed paths and import cycle 2026-03-13 13:54:16 -04:00
inspect_module.go refactor(inspect): replace private engine with shared InlineVideoPlayer 2026-03-26 23:06:24 -04:00
inspect_module_stub.go build: always compile with native_media tag; fix inspect stub message 2026-03-22 01:26:35 -04:00
locale_module.go feat: bootstrap FFmpeg DLLs for native media engine 2026-03-21 13:55:40 -04:00
logo_embed.go dev33: fix embed paths and import cycle 2026-03-13 13:54:16 -04:00
main.go feat(queue): add elapsed and remaining time to queue and status bar 2026-04-02 08:25:31 -04:00
mainmenu_module.go feat(ui): add Burn module button to main menu with coming soon dialog 2026-03-27 00:45:51 -04:00
merge_config.go Move module config persistence into internal package 2026-03-06 10:31:15 -05:00
naming_helpers.go Extract naming helpers into internal app package 2026-03-06 10:32:34 -05:00
native_media.go Add panic recovery to player module and fix DLL bundling in local build 2026-03-25 02:25:28 -04:00
native_media_stub.go media: wire volume, HW decode, chapters, subtitle tracks, and thumbnail preview 2026-03-22 06:58:14 -04:00
platform.go fix: remove videotoolbox from all user-facing HW accel dropdowns 2026-03-22 09:24:23 -04:00
player_module.go fix(video-pane): pass real appState to buildVideoPane in compare and player 2026-03-26 18:23:52 -04:00
queue_module.go feat(queue): add Burn DVD button for author jobs with ISO output 2026-03-27 00:41:42 -04:00
README.md feat: implement Archivist round-trip (multitrack rip/load/author) 2026-03-15 23:47:36 -04:00
rip_module.go refactor: extract rip module logic into internal/app/modules/rip/ 2026-03-25 07:10:17 -04:00
settings_module.go chore: remove remaining darwin/macOS code blocks 2026-04-02 01:17:14 -04:00
subtitles_module.go Extract subtitles module to internal/app/modules/subtitles 2026-03-22 04:28:13 -04:00
thumbnail_config.go Move module config persistence into internal package 2026-03-06 10:31:15 -05:00
thumbnail_module.go feat(logo): replace all logo assets with v3 VT_logo set 2026-03-17 12:05:34 -04:00
TODO.md fix(dvd): patch menu PGC cell sectors and VMGM_VOBS_Sector for folder output 2026-04-02 13:44:10 -04:00
update_linux.go Add auto-update: Install Update/Patches buttons download and restart 2026-03-13 13:01:45 -04:00
update_windows.go Add auto-update: Install Update/Patches buttons download and restart 2026-03-13 13:01:45 -04:00
upscale_module.go feat(upscale): integrate filter controls into upscale module 2026-03-27 01:29:27 -04:00
upscale_player_native.go fix(native_media): fix build errors from previous changes 2026-03-23 12:23:57 -04:00
upscale_player_stub.go feat: add dual-player comparison support to Upscale module 2026-03-21 13:38:38 -04:00
VERSION Bump version to v0.1.1-dev39 2026-03-25 03:56:11 -04:00
video_pane_native.go player: add native media support to Convert module 2026-03-20 02:06:43 -04:00
video_pane_stub.go player: add native media support to Convert module 2026-03-20 02:06:43 -04:00

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

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)

  1. Start VideoToolsVideoTools
  2. Load a video → Drag & drop into Convert module
  3. Select format → Choose "DVD-NTSC (MPEG-2)" or "DVD-PAL (MPEG-2)"
  4. Choose aspect → Select 4:3 or 16:9
  5. Name output → Enter filename (without .mpg)
  6. Queue → Click "Add to Queue"
  7. Encode → Click "View Queue" → "Start Queue"
  8. Export → Use the .mpg file in DVDStyler

Documentation

Getting Started:

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 iu translation 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 encoding
  • internal/queue/ - Job queue system
  • internal/ui/ - User interface components
  • internal/player/ - Media playback
  • scripts/ - 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=1 for verbose logging

Getting Help

  1. Read BUILD_AND_RUN.md for setup issues
  2. Read docs/README.md for module and guide links
  3. Read DVD_USER_GUIDE.md for DVD-specific workflows
  4. Check videotools.log for error details
  5. Review documentation in project root