Simple GUI toolset for FFmpeg
Go to file
Stu Leak d7ec373470 Fix conversion progress updates when navigating between modules
Previously, when a conversion was started and the user navigated away from
the Convert module and returned, the progress stats would freeze (though the
progress bar would continue animating). This was caused by the conversion
goroutine updating stale widget references.

Changes:
- Decoupled conversion state from UI widgets
- Conversion goroutine now only updates appState (convertBusy, convertStatus)
- Added 200ms UI refresh ticker in buildConvertView to update widgets from state
- Removed all direct widget manipulation from background conversion process

This ensures conversion progress stats remain accurate and update correctly
regardless of module navigation, supporting the persistent video context
design where conversions continue running while users work in other modules.
2025-11-25 18:49:01 -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 Add comprehensive encoder settings and fix window layout (v0.1.0-dev10) 2025-11-23 20:17:17 -05:00
.gitignore Ignore built binary and remove from repo 2025-11-21 18:57:48 -05:00
DONE.md Refactor to modular architecture with rainbow UI (v0.1.0-dev8) 2025-11-23 14:56:37 -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
main.go Fix conversion progress updates when navigating between modules 2025-11-25 18:49:01 -05:00
README.md Improve video player layout with overlay controls 2025-11-20 15:06:52 -05:00
TODO.md Refactor to modular architecture with rainbow UI (v0.1.0-dev8) 2025-11-23 14:56:37 -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.