No description
  • Go 90.1%
  • Shell 5.1%
  • PowerShell 3.8%
  • Batchfile 0.7%
  • C 0.3%
Find a file
Stu Leak 7c54e339d0
All checks were successful
Forgejo Publish Release / windows-package (push) Successful in 1m25s
Forgejo Publish Release / linux-package (push) Successful in 3m48s
Forgejo Publish Release / publish-release (push) Successful in 10s
docs(player): mark predecodeAhead dead code as fixed in dev44
2026-04-20 02:48:21 -04:00
.forgejo/workflows fix(ci): add libdrm-dev to Linux build deps 2026-04-13 23:37:23 -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@5a766e7f2c fix(dnd): wire DropTarget dispatch for convert and module tile drops 2026-04-06 14:02:31 -04:00
assets feat(player): SMPTE colour bars idle state and click-to-load dialog 2026-04-11 21:35:57 -04:00
cmd Fix author module duplicate file bug and add IFO debugging tools 2026-04-07 18:34:22 -04:00
docs docs(player): mark predecodeAhead dead code as fixed in dev44 2026-04-20 02:48:21 -04:00
internal refactor(player): remove dead predecodeAhead code from SmoothScrubbing 2026-04-20 02:44:44 -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 remove: strip all GStreamer code — native media engine is the only player 2026-04-13 22:18:30 -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 docs(agents): hard rule — no new root-level Go files; all new code in internal/ 2026-04-18 04:04:53 -04:00
audio_module.go Audio module: i18n all user-facing strings, replace HSplit with VSplit 2026-04-12 03:18:43 -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 Audio module: i18n all user-facing strings, replace HSplit with VSplit 2026-04-12 03:18:43 -04:00
author_menu_preview.go Fix Preview tab button commands 2026-03-25 05:30:45 -04:00
author_module.go perf(media): decode-ahead buffer, multi-thread SW decode, encoding threads 2026-04-18 03:26:44 -04:00
burn_linux.go fix(burn): replace stubs with real burn implementations 2026-04-04 13:43:54 -04:00
burn_module.go feat(logging): add CatBurn and error logging 2026-04-07 07:36:01 -04:00
burn_windows.go fix(burn): replace stubs with real burn implementations 2026-04-04 13:43:54 -04:00
compare_module.go fix(player): always render native player widget to show SMPTE bars 2026-04-13 21:29:50 -04:00
convert_player_native.go fix(ui): make volume sliders larger (150x40) for better visibility 2026-04-19 19:33:29 -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(player): dev43 thread-safety audit — pixel format crash, Close race, seekLoop leak 2026-04-16 10:00:24 -04:00
enhancement_module.go dev34: extract enhancement module to internal/app/modules/enhancement 2026-03-15 13:50:26 -04:00
file_manager_module.go feat(filemanager): add context menu to open files in modules 2026-04-04 13:39:06 -04:00
filters_module.go Fix video loading in Convert and Filters modules 2026-04-10 22:09:45 -04:00
fonts_embed.go feat(player): SMPTE colour bars idle state and click-to-load dialog 2026-04-11 21:35:57 -04:00
FyneApp.toml fix(player): dev43 thread-safety audit — pixel format crash, Close race, seekLoop leak 2026-04-16 10:00:24 -04:00
go.mod feat(tooltips): add tooltip support to module tiles 2026-04-05 19:33:35 -04:00
go.sum feat(tooltips): add tooltip support to module tiles 2026-04-05 19:33:35 -04:00
icons_embed.go dev33: fix embed paths and import cycle 2026-03-13 13:54:16 -04:00
inspect_module.go feat(inspect): complete Inspect module with chapters tab, HDR color data, export features, metadata editing 2026-04-07 08:42:27 -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 fix(convert): default bitrate mode to CRF if empty to avoid nil 2026-04-20 02:27:58 -04:00
mainmenu_module.go feat(tooltips): add tooltips to Convert module 2026-04-06 13:25:33 -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 fix(player): disable HW decode by default, add Settings toggle 2026-04-16 02:37:08 -04:00
native_media_stub.go fix(player): disable HW decode by default, add Settings toggle 2026-04-16 02:37:08 -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(player): always render native player widget to show SMPTE bars 2026-04-13 21:29:50 -04:00
queue_module.go fix(queue): improve right-click context menu safety 2026-04-06 13:57:13 -04:00
README.md feat: implement Archivist round-trip (multitrack rip/load/author) 2026-03-15 23:47:36 -04:00
rip_module.go feat(logging): add CatRip and error logging 2026-04-07 07:31:59 -04:00
settings_module.go fix(player): disable HW decode by default, add Settings toggle 2026-04-16 02:37:08 -04:00
subtitles_module.go feat(player): consistent SMPTE idle state across all module players 2026-04-11 21:44:07 -04:00
thumbnail_config.go refactor(thumbnail): replace ContactSheet bool with OutputMode string 2026-04-12 17:11:49 -04:00
thumbnail_module.go Thumbnail: 3-way output mode toggle (Individual / Contact Sheet / Both) 2026-04-13 04:45:40 -04:00
TODO.md fix(player): dev43 thread-safety audit — pixel format crash, Close race, seekLoop leak 2026-04-16 10:00:24 -04:00
update_linux.go fix(update): use helper script for Linux binary replacement 2026-04-13 21:00:54 -04:00
update_windows.go fix(update): retry file copy until lock releases instead of fixed 2s sleep 2026-04-07 16:58:34 -04:00
upscale_module.go Add Real-CUGAN support with model catalog abstraction 2026-04-09 17:16:14 -04:00
VERSION fix(player): dev43 thread-safety audit — pixel format crash, Close race, seekLoop leak 2026-04-16 10:00:24 -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