forked from Leak_Technologies/VideoTools
Fork of VideoTools focused on player/inspection. VT Player lets us iterate on playback, navigation, and analysis workflows independently of the full suite.
Add comprehensive DVD-Video encoding functionality:
- New internal/convert package with modular architecture
- types.go: Core types (VideoSource, ConvertConfig, FormatOption)
- ffmpeg.go: FFmpeg codec mapping and video probing
- presets.go: Output format definitions
- dvd.go: NTSC-specific DVD encoding and validation
- dvd_regions.go: PAL, SECAM, and multi-region support
- New internal/app/dvd_adapter.go for main.go integration
Features implemented:
✓ DVD-NTSC preset (720×480@29.97fps, MPEG-2/AC-3)
✓ Multi-region support (NTSC, PAL, SECAM - all region-free)
✓ Comprehensive validation system with actionable warnings
✓ Automatic framerate conversion (23.976p, 24p, 30p, 60p)
✓ Audio resampling to 48 kHz
✓ Aspect ratio handling (4:3, 16:9, letterboxing)
✓ Interlacing detection and preservation
✓ DVDStyler-compatible output (no re-encoding)
✓ PS2-safe bitrate limits (max 9000 kbps)
Complete technical specifications and integration guide in:
- DVD_IMPLEMENTATION_SUMMARY.md
All packages compile without errors or warnings.
Ready for integration with existing queue and UI systems.
🤖 Generated with Claude Code
|
||
|---|---|---|
| assets/logo | ||
| docs | ||
| internal | ||
| .gitignore | ||
| DONE.md | ||
| DVD_IMPLEMENTATION_SUMMARY.md | ||
| go.mod | ||
| go.sum | ||
| install.sh | ||
| main.go | ||
| README.md | ||
| TODO.md | ||
| videotools | ||
VideoTools Prototype
Requirements
- Go 1.21+
- Fyne 2.x (pulled automatically via
go mod tidy) - FFmpeg (not yet invoked, but required for future transcoding)
Running
Launch the GUI:
go run .
Run a module via CLI:
go run . convert input.avi output.mp4
go run . combine file1.mov file2.wav / final.mp4
go run . logs
Add -debug or VIDEOTOOLS_DEBUG=1 for verbose stderr logs.
Logs
- All actions log to
videotools.log(override withVIDEOTOOLS_LOG_FILE=/path/to/log). - CLI command
videotools logs(orgo run . logs) prints the last 200 lines. - Each entry is tagged (e.g.
[UI],[CLI],[FFMPEG]) so issues are easy to trace.
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.