forked from Leak_Technologies/VideoTools
Add comprehensive Build and Run guide
Complete documentation for building and running VideoTools: Sections: • Quick start (2-minute setup) • Making VideoTools permanent (bash/zsh setup) • Script documentation (what each does) • Build requirements and versions • Troubleshooting guide • Development workflow • DVD encoding complete workflow • Performance notes • Production deployment guide • Getting help and reporting issues Easy setup: source scripts/alias.sh VideoTools That's all users need to run the application!
This commit is contained in:
parent
ce60508480
commit
0bd704d7dc
374
BUILD_AND_RUN.md
Normal file
374
BUILD_AND_RUN.md
Normal file
|
|
@ -0,0 +1,374 @@
|
|||
# VideoTools - Build and Run Guide
|
||||
|
||||
## Quick Start (2 minutes)
|
||||
|
||||
### Option 1: Using the Convenience Script (Recommended)
|
||||
|
||||
```bash
|
||||
cd /home/stu/Projects/VideoTools
|
||||
source scripts/alias.sh
|
||||
VideoTools
|
||||
```
|
||||
|
||||
This will:
|
||||
1. Load the convenience commands
|
||||
2. Build the application (if needed)
|
||||
3. Run VideoTools GUI
|
||||
|
||||
**Available commands after sourcing alias.sh:**
|
||||
- `VideoTools` - Run the application
|
||||
- `VideoToolsRebuild` - Force a clean rebuild
|
||||
- `VideoToolsClean` - Clean all build artifacts
|
||||
|
||||
### Option 2: Using build.sh Directly
|
||||
|
||||
```bash
|
||||
cd /home/stu/Projects/VideoTools
|
||||
bash scripts/build.sh
|
||||
./VideoTools
|
||||
```
|
||||
|
||||
### Option 3: Using run.sh
|
||||
|
||||
```bash
|
||||
cd /home/stu/Projects/VideoTools
|
||||
bash scripts/run.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Making VideoTools Permanent (Optional)
|
||||
|
||||
To use `VideoTools` command from anywhere in your terminal:
|
||||
|
||||
### For Bash users:
|
||||
Add this line to `~/.bashrc`:
|
||||
```bash
|
||||
source /home/stu/Projects/VideoTools/scripts/alias.sh
|
||||
```
|
||||
|
||||
Then reload:
|
||||
```bash
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
### For Zsh users:
|
||||
Add this line to `~/.zshrc`:
|
||||
```bash
|
||||
source /home/stu/Projects/VideoTools/scripts/alias.sh
|
||||
```
|
||||
|
||||
Then reload:
|
||||
```bash
|
||||
source ~/.zshrc
|
||||
```
|
||||
|
||||
### After setting up:
|
||||
From any directory, you can simply type:
|
||||
```bash
|
||||
VideoTools
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## What Each Script Does
|
||||
|
||||
### build.sh
|
||||
```bash
|
||||
bash scripts/build.sh
|
||||
```
|
||||
|
||||
**Purpose:** Builds VideoTools from source with full dependency management
|
||||
|
||||
**What it does:**
|
||||
1. Checks if Go is installed
|
||||
2. Displays Go version
|
||||
3. Cleans previous builds and cache
|
||||
4. Downloads and verifies all dependencies
|
||||
5. Builds the application
|
||||
6. Shows output file location and size
|
||||
|
||||
**When to use:**
|
||||
- First time building
|
||||
- After major code changes
|
||||
- When you want a clean rebuild
|
||||
- When dependencies are out of sync
|
||||
|
||||
**Exit codes:**
|
||||
- `0` = Success
|
||||
- `1` = Build failed (check errors above)
|
||||
|
||||
### run.sh
|
||||
```bash
|
||||
bash scripts/run.sh
|
||||
```
|
||||
|
||||
**Purpose:** Runs VideoTools, building first if needed
|
||||
|
||||
**What it does:**
|
||||
1. Checks if binary exists
|
||||
2. If binary missing, runs `build.sh`
|
||||
3. Verifies binary was created
|
||||
4. Launches the application
|
||||
|
||||
**When to use:**
|
||||
- Every time you want to run VideoTools
|
||||
- When you're not sure if it's built
|
||||
- After code changes (will rebuild if needed)
|
||||
|
||||
**Advantages:**
|
||||
- Automatic build detection
|
||||
- No manual steps needed
|
||||
- Always runs the latest code
|
||||
|
||||
### alias.sh
|
||||
```bash
|
||||
source scripts/alias.sh
|
||||
```
|
||||
|
||||
**Purpose:** Creates convenient shell commands
|
||||
|
||||
**What it does:**
|
||||
1. Adds `VideoTools` command (alias for `scripts/run.sh`)
|
||||
2. Adds `VideoToolsRebuild` function
|
||||
3. Adds `VideoToolsClean` function
|
||||
4. Prints help text
|
||||
|
||||
**When to use:**
|
||||
- Once per shell session
|
||||
- Add to ~/.bashrc or ~/.zshrc for permanent access
|
||||
|
||||
**Commands created:**
|
||||
```
|
||||
VideoTools # Run the app
|
||||
VideoToolsRebuild # Force rebuild
|
||||
VideoToolsClean # Remove build artifacts
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Build Requirements
|
||||
|
||||
### Required:
|
||||
- **Go 1.21 or later**
|
||||
```bash
|
||||
go version
|
||||
```
|
||||
If not installed: https://golang.org/dl
|
||||
|
||||
### Recommended:
|
||||
- At least 2 GB free disk space (for dependencies)
|
||||
- Stable internet connection (for downloading dependencies)
|
||||
|
||||
### Optional:
|
||||
- FFmpeg (for actual video encoding)
|
||||
```bash
|
||||
ffmpeg -version
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Problem: "Go is not installed"
|
||||
**Solution:**
|
||||
1. Install Go from https://golang.org/dl
|
||||
2. Add Go to PATH: Add `/usr/local/go/bin` to your `$PATH`
|
||||
3. Verify: `go version`
|
||||
|
||||
### Problem: Build fails with "CGO_ENABLED" error
|
||||
**Solution:** The script already handles this with `CGO_ENABLED=0`. If you still get errors:
|
||||
```bash
|
||||
export CGO_ENABLED=0
|
||||
bash scripts/build.sh
|
||||
```
|
||||
|
||||
### Problem: "Permission denied" on scripts
|
||||
**Solution:**
|
||||
```bash
|
||||
chmod +x scripts/*.sh
|
||||
bash scripts/build.sh
|
||||
```
|
||||
|
||||
### Problem: Out of disk space
|
||||
**Solution:** Clean the cache
|
||||
```bash
|
||||
bash scripts/build.sh
|
||||
# Or manually:
|
||||
go clean -cache -modcache
|
||||
```
|
||||
|
||||
### Problem: Outdated dependencies
|
||||
**Solution:** Clean and rebuild
|
||||
```bash
|
||||
rm -rf go.mod go.sum
|
||||
go mod init git.leaktechnologies.dev/stu/VideoTools
|
||||
bash scripts/build.sh
|
||||
```
|
||||
|
||||
### Problem: Binary won't run
|
||||
**Solution:** Check if it was built:
|
||||
```bash
|
||||
ls -lh VideoTools
|
||||
file VideoTools
|
||||
```
|
||||
|
||||
If missing, rebuild:
|
||||
```bash
|
||||
bash scripts/build.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Making code changes and testing:
|
||||
|
||||
```bash
|
||||
# After editing code, rebuild and run:
|
||||
VideoToolsRebuild
|
||||
VideoTools
|
||||
|
||||
# Or in one command:
|
||||
bash scripts/build.sh && ./VideoTools
|
||||
```
|
||||
|
||||
### Quick test loop:
|
||||
```bash
|
||||
# Terminal 1: Watch for changes and rebuild
|
||||
while true; do bash scripts/build.sh; sleep 2; done
|
||||
|
||||
# Terminal 2: Test the app
|
||||
VideoTools
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DVD Encoding Workflow
|
||||
|
||||
### To create a professional DVD video:
|
||||
|
||||
1. **Start the application**
|
||||
```bash
|
||||
VideoTools
|
||||
```
|
||||
|
||||
2. **Go to Convert module**
|
||||
- Click the Convert tile from main menu
|
||||
|
||||
3. **Load a video**
|
||||
- Drag and drop, or use file browser
|
||||
|
||||
4. **Select DVD format**
|
||||
- Choose "DVD-NTSC (MPEG-2)" or "DVD-PAL (MPEG-2)"
|
||||
- DVD options appear automatically
|
||||
|
||||
5. **Choose aspect ratio**
|
||||
- Select 4:3 or 16:9
|
||||
|
||||
6. **Name output**
|
||||
- Enter filename (without .mpg extension)
|
||||
|
||||
7. **Add to queue**
|
||||
- Click "Add to Queue"
|
||||
|
||||
8. **Start encoding**
|
||||
- Click "View Queue" → "Start Queue"
|
||||
|
||||
9. **Use output file**
|
||||
- Output: `filename.mpg`
|
||||
- Import into DVDStyler
|
||||
- Author and burn to disc
|
||||
|
||||
**Output specifications:**
|
||||
|
||||
NTSC:
|
||||
- 720×480 @ 29.97fps
|
||||
- MPEG-2 video
|
||||
- AC-3 stereo audio @ 48 kHz
|
||||
- Perfect for USA, Canada, Japan, Australia
|
||||
|
||||
PAL:
|
||||
- 720×576 @ 25 fps
|
||||
- MPEG-2 video
|
||||
- AC-3 stereo audio @ 48 kHz
|
||||
- Perfect for Europe, Africa, Asia
|
||||
|
||||
Both output region-free, DVDStyler-compatible, PS2-compatible video.
|
||||
|
||||
---
|
||||
|
||||
## Performance Notes
|
||||
|
||||
### Build time:
|
||||
- First build: 30-60 seconds (downloads dependencies)
|
||||
- Subsequent builds: 5-15 seconds (uses cached dependencies)
|
||||
- Rebuild with changes: 10-20 seconds
|
||||
|
||||
### File sizes:
|
||||
- Binary: ~35 MB (optimized)
|
||||
- With dependencies in cache: ~1 GB total
|
||||
|
||||
### Runtime:
|
||||
- Startup: 1-3 seconds
|
||||
- Memory usage: 50-150 MB depending on video complexity
|
||||
- Encoding speed: Depends on CPU and video complexity
|
||||
|
||||
---
|
||||
|
||||
## Production Use
|
||||
|
||||
For production deployment:
|
||||
|
||||
```bash
|
||||
# Create optimized binary
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o VideoTools
|
||||
|
||||
# Verify it works
|
||||
./VideoTools
|
||||
|
||||
# File size will be smaller with -ldflags
|
||||
ls -lh VideoTools
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Getting Help
|
||||
|
||||
### Check the documentation:
|
||||
- `DVD_USER_GUIDE.md` - How to use DVD encoding
|
||||
- `DVD_IMPLEMENTATION_SUMMARY.md` - Technical details
|
||||
- `README.md` - Project overview
|
||||
|
||||
### Debug a build:
|
||||
```bash
|
||||
# Verbose output
|
||||
bash scripts/build.sh 2>&1 | tee build.log
|
||||
|
||||
# Check go environment
|
||||
go env
|
||||
|
||||
# Verify dependencies
|
||||
go mod graph
|
||||
```
|
||||
|
||||
### Report issues:
|
||||
Include:
|
||||
1. Output from `go version`
|
||||
2. OS and architecture (`uname -a`)
|
||||
3. Exact error message
|
||||
4. Steps to reproduce
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
**Easiest way:**
|
||||
```bash
|
||||
cd /home/stu/Projects/VideoTools
|
||||
source scripts/alias.sh
|
||||
VideoTools
|
||||
```
|
||||
|
||||
**That's it!** The scripts handle everything else automatically.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user