Problem
StreamDL has no structured download progress data. FFmpeg output goes to logs only, so users cannot see speed, percentage, or ETA without parsing debug output manually.
This blocks a proper TUI (#552) and limits observability for long VOD downloads.
Proposed scope
Parse FFmpeg stderr progress lines during live and VOD downloads and expose structured state internally, e.g.:
- Channel / download type (live vs vod)
- Bytes downloaded / duration recorded
- Speed, percentage (when determinable), ETA
Suggested approach
- Parse FFmpeg
-progress output or stderr time= / speed= / size= lines in download_stream.go
- Hold active download state in memory (similar pattern to notice buffer / active user tracking)
- Log at DEBUG by default; reserve INFO for tick summary + notices
Out of scope (follow-ups)
Dependencies / related
Acceptance criteria
Problem
StreamDL has no structured download progress data. FFmpeg output goes to logs only, so users cannot see speed, percentage, or ETA without parsing debug output manually.
This blocks a proper TUI (#552) and limits observability for long VOD downloads.
Proposed scope
Parse FFmpeg stderr progress lines during live and VOD downloads and expose structured state internally, e.g.:
Suggested approach
-progressoutput or stderrtime=/speed=/size=lines indownload_stream.goOut of scope (follow-ups)
Dependencies / related
Acceptance criteria