Repository navigation
Play a scene's footage, time it by hand, and keep dissolves off clip audio - #7
Merged
Merged
Conversation
…audio Clicking a scene's thumbnail opens its footage in a player that stops at the out point. Under it: in/out points with ±0.1 s / ±1 s nudges and "set here", "Whole clip", the scene's length (follow narration, fixed, match footage), loop or hold for short footage, and one line saying when the footage will loop, hold or be cut short by its narration. A blend out of a clip that plays its own sound used to cut its last words: the stitch ends the outgoing shot's audio where the blend starts. The layout now lengthens such a clip by the blend's overlap (its `tail`), played from the footage after the out point, or as a held last frame where the file ends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ko6G3pNhKu51bkYyUceSyg
davior
marked this pull request as ready for review
October 21, 2026 11:34
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.
Why
When a video was built from lots of clips, the timing drifted. The editor showed each scene's trim but couldn't change it. Scene length and loop/hold were only reachable through the JSON tab. And a dissolve out of a clip with its own sound cut that clip's last words.
What
Footage player (
ClipPlayer.tsx,spec/clip.ts): click a scene's thumbnail to play exactly its trimmed segment. The player stops at the out point, and it's muted unless the scene plays the footage's sound. Below the player:render/estimate.py. For a clip, the line names any blend out of it.GAM clips play from their offset in the parent file. Signed URLs are only shown, never stored in the spec.
Dissolves no longer clip a clip's audio (
compile.layout,renderer.py,ffmpeg.py): the stitch ends the outgoing shot's audio where a blend starts. Avideo_soundunit before a blend is now lengthened by the overlap (Unit.tail), so it reaches its out point before the blend begins. The extra time plays the footage after the out point, or a held last frame where the file ends (tpadnow also coversvideo_sound). Shot starts shift with it, so anchors, tracks and overlays follow.Tests
pytest -q→ 629 passed, including new compile tests (blend vs. cut out of a clip) and an ffmpeg test for the hold.npm test→ 151 passed (newclip.test.ts,ClipPlayer.test.tsx, and a VisualStrip test);npm run build,lintandformat:checkare clean.Not tested: playing in a real browser against a live GAM, and an end-to-end render with ffmpeg.
Not in this PR
Prompt-to-clip generation (picture-then-animate, text-to-video in GAM, or letting the assistant generate video) is waiting on a decision.
Generated by Claude Code