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.
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
|