Audio-clocked playback for judging sync
Lip sync cannot be judged silently. extract.sh now pulls the audio track and writes manifest.json alongside the frames; the page reads the true extraction rate from it rather than assuming one, since a guessed fps desynchronises picture from sound - the one thing this view exists to show. Audio is the clock: frame = floor(currentTime * fps). A slow render loop drops frames instead of drifting, and half/quarter speed work via playbackRate with the picture following for free. Scrubbing, stepping and clicking a thumbnail all seek the audio too. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
a082208ad5
commit
5ac919b9d6
7 changed files with 157 additions and 36 deletions
|
|
@ -63,7 +63,8 @@
|
|||
<input type="text" id="framedir" value="frames" size="7" title="frame directory">
|
||||
<button id="btn-frames">Load frames</button>
|
||||
<button id="btn-play">Play</button>
|
||||
<select id="playfps" title="playback fps"><option>6</option><option selected>12</option><option>24</option></select>
|
||||
<select id="speed" title="playback speed"><option value="1">1x</option><option value="0.5">½x</option><option value="0.25">¼x</option></select>
|
||||
<audio id="audio" controls hidden style="height:28px;vertical-align:middle"></audio>
|
||||
<button id="btn-keepall">Keep all</button>
|
||||
<button id="btn-suggest">Suggest</button>
|
||||
<input type="text" id="takename" value="line_01" size="9" title="take name">
|
||||
|
|
@ -87,6 +88,7 @@
|
|||
<h2>flat render — 320×200 indexed</h2>
|
||||
<canvas id="cv-render"></canvas>
|
||||
<div class="legend" id="framelabel"></div>
|
||||
<div class="legend">audio drives the clock — dropped frames, never drift</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue