Simple GUI toolset for FFmpeg
Go to file
Stu Leak fa4f4119b5 Simplify threading solution and add Clear All button
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>
2025-11-27 00:25:03 -05:00
assets/logo Refactor to modular architecture with rainbow UI (v0.1.0-dev8) 2025-11-23 14:56:37 -05:00
docs Refactor to modular architecture with rainbow UI (v0.1.0-dev8) 2025-11-23 14:56:37 -05:00
internal Simplify threading solution and add Clear All button 2025-11-27 00:25:03 -05:00
.gitignore Ignore built binary and remove from repo 2025-11-21 18:57:48 -05:00
DONE.md Update TODO and DONE files for v0.1.0-dev11 2025-11-26 18:50:05 -05:00
go.mod Implement in-app playback with ffmpeg frame pump and Go audio 2025-11-20 16:11:56 -05:00
go.sum Implement in-app playback with ffmpeg frame pump and Go audio 2025-11-20 16:11:56 -05:00
install.sh Add persistent conversion stats, multi-video navigation, and error debugging 2025-11-26 18:44:54 -05:00
main.go Simplify threading solution and add Clear All button 2025-11-27 00:25:03 -05:00
README.md Improve video player layout with overlay controls 2025-11-20 15:06:52 -05:00
TODO.md Update TODO and DONE files for v0.1.0-dev11 2025-11-26 18:50:05 -05:00
videotools Corrections made to queue system 2025-11-27 00:17:59 -05:00

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 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.

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.