Enhanced build.bat to automatically detect and offer to install all required dependencies for users with minimal Windows dev environment: - Check for winget availability (required for auto-installation) - Detect and offer to install Git (recommended for development) - Improved GCC/MinGW detection with fallback instructions - Better error messages for users without winget - Graceful degradation when automatic installation is not available This ensures Jake and other users with just Go installed can run the build script and get prompted to install everything needed automatically. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| alias.sh | ||
| build-linux.sh | ||
| build-windows.sh | ||
| build.bat | ||
| build.ps1 | ||
| build.sh | ||
| install-deps-linux.sh | ||
| install-deps-windows.ps1 | ||
| README.md | ||
| run.sh | ||
| setup-windows.ps1 | ||
VideoTools Build Scripts
This directory contains scripts for building and managing VideoTools on different platforms.
Linux
Install Dependencies
Automatically installs all required dependencies for your Linux distribution:
./scripts/install-deps-linux.sh
Supported distributions:
- Fedora / RHEL / CentOS
- Ubuntu / Debian / Pop!_OS / Linux Mint
- Arch Linux / Manjaro / EndeavourOS
- openSUSE / SLES
Installs:
- Go 1.21+
- GCC compiler
- OpenGL development libraries
- X11 development libraries
- ALSA audio libraries
- ffmpeg
Build VideoTools
./scripts/build.sh
Features:
- Automatic dependency verification
- Clean build option
- Progress indicators
- Error handling
Run VideoTools
./scripts/run.sh
Runs VideoTools with proper library paths configured.
Shell Alias
source ./scripts/alias.sh
Adds a VideoTools command to your current shell session.
Windows
Install Dependencies
Run in PowerShell as Administrator:
.\scripts\install-deps-windows.ps1
Options:
-UseScoop- Use Scoop package manager instead of Chocolatey-SkipFFmpeg- Skip ffmpeg installation (if you already have it)
Installs:
- Go 1.21+
- MinGW-w64 (GCC compiler)
- ffmpeg
- Git (optional, for development)
Package managers supported:
- Chocolatey (default, requires admin)
- Scoop (user-level, no admin)
Build VideoTools
Run in PowerShell:
.\scripts\build.ps1
Options:
-Clean- Clean build cache before building-SkipTests- Skip running tests
Features:
- Automatic GPU detection (NVIDIA/Intel/AMD)
- Dependency verification
- File size reporting
- Build status indicators
Cross-Platform Notes
CGO Requirements
VideoTools uses Fyne for its GUI, which requires CGO (C bindings) for OpenGL support. This means:
- C compiler required (GCC on Linux, MinGW on Windows)
- OpenGL libraries required (system-dependent)
- Build time is longer than pure Go applications
ffmpeg Requirements
VideoTools requires ffmpeg to be available in the system PATH:
- Linux: Installed via package manager
- Windows: Installed via Chocolatey/Scoop or manually
The application will auto-detect available hardware encoders:
- NVIDIA: NVENC (h264_nvenc, hevc_nvenc)
- Intel: Quick Sync Video (h264_qsv, hevc_qsv)
- AMD: AMF (h264_amf, hevc_amf)
- VA-API (Linux only)
GPU Encoding
For best performance with hardware encoding:
NVIDIA (Recommended for Jake's setup):
- Install latest NVIDIA drivers
- GTX 1060 and newer support NVENC
- Reduces 2-hour encode from 6-9 hours to <1 hour
Intel:
- Install Intel Graphics drivers
- 7th gen (Kaby Lake) and newer support Quick Sync
- Built into CPU, no dedicated GPU needed
AMD:
- Install latest AMD drivers
- Most modern Radeon GPUs support AMF
- Performance similar to NVENC
Troubleshooting
Linux: Missing OpenGL libraries
# Fedora/RHEL
sudo dnf install mesa-libGL-devel
# Ubuntu/Debian
sudo apt install libgl1-mesa-dev
# Arch
sudo pacman -S mesa
Windows: MinGW not in PATH
After installing MinGW, restart PowerShell or add to PATH manually:
$env:Path += ";C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin"
Build fails with "cgo: C compiler not found"
Linux: Install gcc
Windows: Install MinGW via install-deps-windows.ps1
ffmpeg not found
Linux:
sudo dnf install ffmpeg-free # Fedora
sudo apt install ffmpeg # Ubuntu
Windows:
choco install ffmpeg
# or
scoop install ffmpeg
GPU encoding not working
- Verify GPU drivers are up to date
- Check ffmpeg encoders:
ffmpeg -encoders | grep nvenc # NVIDIA ffmpeg -encoders | grep qsv # Intel ffmpeg -encoders | grep amf # AMD - If encoders not listed, reinstall GPU drivers
Development
Quick Build Cycle
Linux:
./scripts/build.sh && ./scripts/run.sh
Windows:
.\scripts\build.ps1 && .\VideoTools.exe
Clean Build
Linux:
./scripts/build.sh # Includes automatic cleaning
Windows:
.\scripts\build.ps1 -Clean
Build for Distribution
Linux:
CGO_ENABLED=1 go build -ldflags="-s -w" -o VideoTools .
strip VideoTools # Further reduce size
Windows:
$env:CGO_ENABLED = "1"
go build -ldflags="-s -w -H windowsgui" -o VideoTools.exe .
The -H windowsgui flag prevents a console window from appearing on Windows.
Platform-Specific Notes
Linux: Wayland vs X11
VideoTools works on both Wayland and X11. The build scripts automatically detect your display server.
Windows: Antivirus False Positives
Some antivirus software may flag the built executable. This is common with Go applications. You may need to:
- Add an exception for the build directory
- Submit the binary to your antivirus vendor for whitelisting
macOS Support (Future)
macOS support is planned but not yet implemented. Required changes:
- Add macOS dependencies (via Homebrew)
- Add macOS build script
- Test Fyne on macOS
- Handle codesigning requirements
License
VideoTools build scripts are part of the VideoTools project. See the main project LICENSE file for details.