fix: use wall-clock timing for SVG and ffmpeg framerate#6
Open
xav-ie wants to merge 2 commits intoagentstation:mainfrom
Open
fix: use wall-clock timing for SVG and ffmpeg framerate#6xav-ie wants to merge 2 commits intoagentstation:mainfrom
xav-ie wants to merge 2 commits intoagentstation:mainfrom
Conversation
Replace time.After with time.Ticker and track actual elapsed time so SVG animation duration and keyframe percentages reflect real wall-clock time. When CanvasToImage is slower than the target frame interval, frames are captured at a lower rate but timestamps remain accurate, preventing compressed playback in the SVG output.
Derive the real capture rate (totalFrames / wallDuration) and pass it to ffmpeg as the input framerate. This ensures MP4 video duration matches the wall-clock recording time when CanvasToImage runs slower than the target framerate.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CanvasToImageruns slower than the target frameratetotalFrames / wallDuration) and pass it to ffmpeg as the input framerate so MP4 duration matches tooContext
When
CanvasToImageis slower than the target frame interval, fewer frames are captured thanframerate × durationpredicts. Previously the SVG used frame-index-based timing, causing animations to play back too fast. This fix uses real wall-clock timestamps instead.Test plan
go test ./...)TestSVGGenerator_SlowCaptureTimestampto verify non-uniform timestamps produce correct animation timing