diff --git a/README.md b/README.md index 735bda5..fc981aa 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,151 @@ -# VideoTools Prototype +# VideoTools - Professional Video Processing Suite -## Requirements -- Go 1.21+ -- Fyne 2.x (pulled automatically via `go mod tidy`) -- FFmpeg (not yet invoked, but required for future transcoding) +## What is VideoTools? -## Running -Launch the GUI: +VideoTools is a professional-grade video processing application with a modern GUI. It specializes in creating **DVD-compliant videos** for authoring and distribution. + +## Key Features + +### DVD-NTSC & DVD-PAL Output +- **Professional MPEG-2 encoding** (720×480 @ 29.97fps for NTSC, 720×576 @ 25fps for PAL) +- **AC-3 Dolby Digital audio** (192 kbps, 48 kHz) +- **DVDStyler compatible** (no re-encoding warnings) +- **PS2 compatible** (PS2-safe bitrate limits) +- **Region-free format** (works worldwide) + +### Batch Processing +- Queue multiple videos +- Pause/resume jobs +- Real-time progress tracking +- Job history and persistence + +### Smart Features +- Automatic framerate conversion (23.976p, 24p, 30p, 60p, VFR → 29.97fps) +- Automatic audio resampling (any rate → 48 kHz) +- Aspect ratio preservation with intelligent handling +- Comprehensive validation with helpful warnings + +## Quick Start + +### One-Time Setup ```bash -go run . +cd /home/stu/Projects/VideoTools +source scripts/alias.sh ``` -Run a module via CLI: +### Run VideoTools ```bash -go run . convert input.avi output.mp4 -go run . combine file1.mov file2.wav / final.mp4 +VideoTools +``` + +## How to Create a Professional DVD + +1. **Start VideoTools** → `VideoTools` +2. **Load a video** → Drag & drop into Convert module +3. **Select format** → Choose "DVD-NTSC (MPEG-2)" or "DVD-PAL (MPEG-2)" +4. **Choose aspect** → Select 4:3 or 16:9 +5. **Name output** → Enter filename (without .mpg) +6. **Queue** → Click "Add to Queue" +7. **Encode** → Click "View Queue" → "Start Queue" +8. **Export** → Use the .mpg file in DVDStyler + +Output is professional quality, ready for: +- DVDStyler authoring (no re-encoding needed) +- DVD menu creation +- Burning to disc +- PS2 playback + +## Documentation + +**For Users:** +- **BUILD_AND_RUN.md** - How to build and run VideoTools +- **DVD_USER_GUIDE.md** - Complete guide to DVD encoding + +**For Developers:** +- **DVD_IMPLEMENTATION_SUMMARY.md** - Technical specifications +- **INTEGRATION_GUIDE.md** - System architecture and integration +- **QUEUE_SYSTEM_GUIDE.md** - Queue system reference + +## Requirements + +- **Go 1.21+** (for building) +- **FFmpeg** (for video encoding) +- **X11 or Wayland display server** (for GUI) + +## System Architecture + +VideoTools has a modular architecture: +- `internal/convert/` - DVD and video encoding +- `internal/queue/` - Job queue system +- `internal/ui/` - User interface components +- `internal/player/` - Media playback +- `scripts/` - Build and run automation + +## Commands + +### Build & Run +```bash +# One-time setup +source scripts/alias.sh + +# Run the application +VideoTools + +# Force rebuild +VideoToolsRebuild + +# Clean build artifacts +VideoToolsClean +``` + +### Legacy (Direct commands) +```bash +# Build +go build -o VideoTools . + +# Run +./VideoTools + +# Run with debug logging +VIDEOTOOLS_DEBUG=1 ./VideoTools + +# View logs go run . logs ``` -Add `-debug` or `VIDEOTOOLS_DEBUG=1` for verbose stderr logs. +## Troubleshooting -## Logs -- All actions log to `videotools.log` (override with `VIDEOTOOLS_LOG_FILE=/path/to/log`). -- CLI command `videotools logs` (or `go run . logs`) prints the last 200 lines. -- Each entry is tagged (e.g. `[UI]`, `[CLI]`, `[FFMPEG]`) so issues are easy to trace. +- See **BUILD_AND_RUN.md** for detailed troubleshooting +- Check **videotools.log** for detailed error messages +- Use `VIDEOTOOLS_DEBUG=1` for verbose logging -## Notes -- GUI requires a running display server (X11/Wayland). In headless shells it will log `[UI] DISPLAY environment variable is empty`. -- Convert screen accepts drag-and-drop or the "Open File…" button; ffprobe metadata populates instantly, the preview box animates extracted frames with simple play/pause + slider controls (and lets you grab cover art), and the "Generate Snippet" button produces a 20-second midpoint clip for quick quality checks (requires ffmpeg in `PATH`). -- Simple mode now applies smart inverse telecine by default—automatically skipping it on progressive footage—and lets you rename the target file before launching a convert job. -- Other module handlers are placeholders; hook them to actual FFmpeg calls next. +## Professional Use Cases + +- Home video archival to physical media +- Professional DVD authoring workflows +- Multi-region video distribution +- Content preservation on optical media +- PS2 compatible video creation + +## Professional Quality Specifications + +### DVD-NTSC +- **Resolution:** 720 × 480 pixels +- **Framerate:** 29.97 fps (NTSC standard) +- **Video:** MPEG-2 codec, 6000 kbps +- **Audio:** AC-3 stereo, 192 kbps, 48 kHz +- **Regions:** USA, Canada, Japan, Australia + +### DVD-PAL +- **Resolution:** 720 × 576 pixels +- **Framerate:** 25.00 fps (PAL standard) +- **Video:** MPEG-2 codec, 8000 kbps +- **Audio:** AC-3 stereo, 192 kbps, 48 kHz +- **Regions:** Europe, Africa, Asia, Australia + +## Getting Help + +1. Read **BUILD_AND_RUN.md** for setup issues +2. Read **DVD_USER_GUIDE.md** for how-to questions +3. Check **videotools.log** for error details +4. Review documentation in project root