VideoTools/scripts/README.md

257 lines
5.1 KiB
Markdown

# 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:
```bash
./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
```bash
./scripts/build.sh
```
**Features:**
- Automatic dependency verification
- Clean build option
- Progress indicators
- Error handling
### Run VideoTools
```bash
./scripts/run.sh
```
Runs VideoTools with proper library paths configured.
### Shell Alias
```bash
source ./scripts/alias.sh
```
Adds a `VideoTools` command to your current shell session.
## Windows
### Install Dependencies
Run in PowerShell as Administrator:
```powershell
.\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:
```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](https://fyne.io/) for its GUI, which requires CGO (C bindings) for OpenGL support. This means:
1. **C compiler required** (GCC on Linux, MinGW on Windows)
2. **OpenGL libraries required** (system-dependent)
3. **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
```bash
# 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:
```powershell
$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:**
```bash
sudo dnf install ffmpeg-free # Fedora
sudo apt install ffmpeg # Ubuntu
```
**Windows:**
```powershell
choco install ffmpeg
# or
scoop install ffmpeg
```
### GPU encoding not working
1. Verify GPU drivers are up to date
2. Check ffmpeg encoders:
```bash
ffmpeg -encoders | grep nvenc # NVIDIA
ffmpeg -encoders | grep qsv # Intel
ffmpeg -encoders | grep amf # AMD
```
3. If encoders not listed, reinstall GPU drivers
## Development
### Quick Build Cycle
Linux:
```bash
./scripts/build.sh && ./scripts/run.sh
```
Windows:
```powershell
.\scripts\build.ps1 && .\VideoTools.exe
```
### Clean Build
Linux:
```bash
./scripts/build.sh # Includes automatic cleaning
```
Windows:
```powershell
.\scripts\build.ps1 -Clean
```
### Build for Distribution
**Linux:**
```bash
CGO_ENABLED=1 go build -ldflags="-s -w" -o VideoTools .
strip VideoTools # Further reduce size
```
**Windows:**
```powershell
$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:
1. Add an exception for the build directory
2. Submit the binary to your antivirus vendor for whitelisting
- Handle codesigning requirements
## License
VideoTools build scripts are part of the VideoTools project.
See the main project LICENSE file for details.