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>
246 lines
3.9 KiB
Markdown
246 lines
3.9 KiB
Markdown
# Building VideoTools
|
|
|
|
VideoTools uses a universal build script that automatically detects your platform and builds accordingly.
|
|
|
|
---
|
|
|
|
## Quick Start (All Platforms)
|
|
|
|
```bash
|
|
./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:**
|
|
```bash
|
|
# Fedora/RHEL
|
|
sudo dnf install ffmpeg
|
|
|
|
# Ubuntu/Debian
|
|
sudo apt install ffmpeg
|
|
|
|
# Arch Linux
|
|
sudo pacman -S ffmpeg
|
|
```
|
|
|
|
**Build:**
|
|
```bash
|
|
./scripts/build.sh
|
|
```
|
|
|
|
**Output:** `VideoTools` (native executable)
|
|
|
|
**Run:**
|
|
```bash
|
|
./VideoTools
|
|
```
|
|
|
|
---
|
|
|
|
### macOS
|
|
|
|
**Prerequisites:**
|
|
- Go 1.21+
|
|
- FFmpeg (via Homebrew)
|
|
- Xcode Command Line Tools
|
|
|
|
**Install FFmpeg:**
|
|
```bash
|
|
brew install ffmpeg
|
|
```
|
|
|
|
**Build:**
|
|
```bash
|
|
./scripts/build.sh
|
|
```
|
|
|
|
**Output:** `VideoTools` (native executable)
|
|
|
|
**Run:**
|
|
```bash
|
|
./VideoTools
|
|
```
|
|
|
|
---
|
|
|
|
### Windows
|
|
|
|
**Prerequisites:**
|
|
- Go 1.21+
|
|
- MinGW-w64 (for CGO)
|
|
- Git Bash or similar (to run shell scripts)
|
|
|
|
**Build:**
|
|
```bash
|
|
./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:**
|
|
```bash
|
|
# 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
|
|
```bash
|
|
./scripts/build-linux.sh
|
|
```
|
|
|
|
### Windows Cross-Compile (from Linux)
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# The build script automatically cleans cache
|
|
./scripts/build.sh
|
|
```
|
|
|
|
### Debug Build
|
|
```bash
|
|
# Standard build includes debug info by default
|
|
CGO_ENABLED=1 go build -o VideoTools
|
|
|
|
# Run with debug logging
|
|
./VideoTools -debug
|
|
```
|
|
|
|
### Release Build (Smaller Binary)
|
|
```bash
|
|
# 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):
|
|
```bash
|
|
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:
|
|
- MSYS2: https://www.msys2.org/
|
|
- Or standalone: https://www.mingw-w64.org/
|
|
|
|
### macOS: "ld: library not found"
|
|
Install Xcode Command Line Tools:
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```yaml
|
|
# 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
|