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.
Simplified the approach by removing complex callback logic and using a
simple 500ms timer-based update for the stats bar instead. This eliminates
threading errors completely while keeping the code straightforward.
Changes:
1. Removed queue change callback entirely
2. Added background timer that updates stats bar every 500ms
3. Removed initComplete flag (no longer needed)
4. Simplified setContent() to direct calls
5. Added onClearAll parameter to BuildQueueView()
6. Added ClearAll() method to Queue (removes all jobs)
7. Added Clear All button with DangerImportance styling in queue view
8. Clear Completed button now has LowImportance styling
This approach is much simpler: the UI just polls the queue state
periodically instead of trying to handle callbacks from goroutines.
No more threading errors, less code, easier to understand.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
|
||
|---|---|---|
| assets/logo | ||
| docs | ||
| internal | ||
| .gitignore | ||
| DONE.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.