Jafner.net/archive/PyClipIt/TODO.md
Joey Hafner 6086222503
Reorganize root level of repo.
- Move homelab, Jafner.dev (now called blog) to root.
- Rename "archived projects" -> "archive"
- Rename "active projects" -> "projects"
- Rename "jafner-homebrew" -> "5ehomebrew"
- Rename "docker-llm-amd" -> "local-ai"
2024-07-16 12:17:55 -07:00

2.2 KiB

UI

  • Allow clip end to ignore keyframes. (Ignore step size too?)
  • Create popup message for long loading times (getting keyframes, extracting clip)
  • Create some notification for clip complete.
  • Handle video resizing
  • Input box for clip start and end times.
  • Timeline zoom for better handling of long vods.
  • Move clip start label to left of timeline. Clip end label to right.
  • Add tab for console output.
  • Replace H:MM:SS.ms time string format with H:MM:SS (n), where n is the frame since last keyframe. Clip start will always have an n of 0, so it can be omitted.

FFMPEG

  • Ensure extraction does not lose audio or video streams. Fixed via -map 0 in extract function.
  • PREVIEW. Figure out how to play the video segment in the preview panel.
  • Currently only supports AV1 mkv video. Now supports whatever the locally installed ffplay can handle.
  • Figure out how to print video info to info tab.
  • Figure out how to overlay keyboard interface info onto video.
  • Diagnose 'TRANSCODED.mp4' appears to have only one keyframe.
  • Test seek performance with -ss pre--i vs. post -i. ffmpeg - seeking.

Design

  • Job queue.
  • Run from file explorer context menu. (Right click file, open with: Clip)
  • Create and populate a video info tab. Codecs, duration, resolution and framerate, bitrate, etc.
  • Handle case where video file has bad keyframes (e.g. only keyframe at start.)
  • Implement logging.
  • Handle file overwrite with prompt.

Long-Term

  • Implement testing; unit, perf.
  • Implement build pipeline.
  • Re-implement the range slider to more precisely target our use case.
    • Start adheres to steps, end ignores steps.
    • Implement use of the .bind() method from Tkinter Scale to trigger callback only when slider is released (reduce computational load). StackOverflow.
  • Re-implement the preview player without ffmpeg, or integrate ffmpeg window into preview pane.

Resources