VideoTools/docs/BUILD.md
Stu Leak 925334d8df Clean up root folder and update TODO/DONE for dev19
Root Folder Cleanup:
- Moved all documentation .md files to docs/ folder
- Kept only README.md, TODO.md, DONE.md in root
- Cleaner project structure for contributors
- Better organization of documentation

Files Moved to docs/:
- BUILD.md, BUILD_AND_RUN.md, CHANGELOG.md
- COMPLETION_SUMMARY.md, DVD_IMPLEMENTATION_SUMMARY.md
- DVD_USER_GUIDE.md, INSTALLATION.md, INTEGRATION_GUIDE.md
- LATEST_UPDATES.md, QUEUE_SYSTEM_GUIDE.md, QUICKSTART.md
- TESTING_DEV13.md, TEST_DVD_CONVERSION.md, WINDOWS_SETUP.md

DONE.md Updates:
- Added dev19 section (2025-12-18)
- Documented history sidebar delete button
- Documented command preview improvements
- Documented format options reorganization
- Documented bitrate mode descriptive labels
- Documented critical bug fixes (Convert crash, log viewer)
- Documented bitrate control improvements

TODO.md Updates:
- Updated to dev19+ plan
- Added "Current Focus: dev19" section
- Added AI frame interpolation task (RIFE, FILM, DAIN, CAIN)
- Added color space preservation tasks
- Reorganized priority structure

This establishes dev19 as the current development focus on
Convert module cleanup and polish, with clear tracking of
completed work and upcoming priorities.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-18 16:21:15 -05:00

3.9 KiB

Building VideoTools

VideoTools uses a universal build script that automatically detects your platform and builds accordingly.


Quick Start (All Platforms)

./scripts/build.sh

That's it! The script will:

  • Detect your platform (Linux/macOS/Windows)
  • Build the appropriate executable
  • On Windows: Offer to download FFmpeg automatically

Platform-Specific Details

Linux

Prerequisites:

  • Go 1.21+
  • FFmpeg (system package)
  • CGO build dependencies

Install FFmpeg:

# Fedora/RHEL
sudo dnf install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Arch Linux
sudo pacman -S ffmpeg

Build:

./scripts/build.sh

Output: VideoTools (native executable)

Run:

./VideoTools

macOS

Prerequisites:

  • Go 1.21+
  • FFmpeg (via Homebrew)
  • Xcode Command Line Tools

Install FFmpeg:

brew install ffmpeg

Build:

./scripts/build.sh

Output: VideoTools (native executable)

Run:

./VideoTools

Windows

Prerequisites:

  • Go 1.21+
  • MinGW-w64 (for CGO)
  • Git Bash or similar (to run shell scripts)

Build:

./scripts/build.sh

The script will:

  1. Build VideoTools.exe
  2. Prompt to download FFmpeg automatically
  3. Set up everything in dist/windows/

Output: VideoTools.exe (Windows GUI executable)

Run:

  • Double-click VideoTools.exe in dist/windows/
  • Or: ./VideoTools.exe from Git Bash

Automatic FFmpeg Setup:

# The build script will offer this automatically, or run manually:
./setup-windows.bat

# Or in PowerShell:
.\scripts\setup-windows.ps1 -Portable

Advanced: Manual Platform-Specific Builds

Linux/macOS Native Build

./scripts/build-linux.sh

Windows Cross-Compile (from Linux)

# Install MinGW first
sudo dnf install mingw64-gcc mingw64-winpthreads-static  # Fedora
# OR
sudo apt install gcc-mingw-w64  # Ubuntu/Debian

# Cross-compile
./scripts/build-windows.sh

# Output: dist/windows/VideoTools.exe (with FFmpeg bundled)

Build Options

Clean Build

# The build script automatically cleans cache
./scripts/build.sh

Debug Build

# Standard build includes debug info by default
CGO_ENABLED=1 go build -o VideoTools

# Run with debug logging
./VideoTools -debug

Release Build (Smaller Binary)

# Strip debug symbols
go build -ldflags="-s -w" -o VideoTools

Troubleshooting

"go: command not found"

Install Go 1.21+ from https://go.dev/dl/

"CGO_ENABLED must be set"

CGO is required for Fyne (GUI framework):

export CGO_ENABLED=1
./scripts/build.sh

"ffmpeg not found" (Linux/macOS)

Install FFmpeg using your package manager (see above).

Windows: "x86_64-w64-mingw32-gcc not found"

Install MinGW-w64:

macOS: "ld: library not found"

Install Xcode Command Line Tools:

xcode-select --install

Build Artifacts

After building, you'll find:

Linux/macOS:

VideoTools/
└── VideoTools          # Native executable

Windows:

VideoTools/
├── VideoTools.exe      # Main executable
└── dist/
    └── windows/
        ├── VideoTools.exe
        ├── ffmpeg.exe      # (after setup)
        └── ffprobe.exe     # (after setup)

Development Builds

For faster iteration during development:

# Quick build (no cleaning)
go build -o VideoTools

# Run directly
./VideoTools

# With debug output
./VideoTools -debug

CI/CD

The build scripts are designed to work in CI/CD environments:

# Example GitHub Actions
- name: Build VideoTools
  run: ./scripts/build.sh

For more details, see:

  • QUICKSTART.md - Simple setup guide
  • WINDOWS_SETUP.md - Windows-specific instructions
  • docs/WINDOWS_COMPATIBILITY.md - Cross-platform implementation details