Phase 12: frame-accurate timecode via an overscan band — vgstrip encoder/decoder, sweep writes tmcd + creation_time + sidecar, dumpd /time, Caddy /time routes, MediaMTX microsecond names, /dock/clock/ page, dock band setup via obs-websocket, Go Live band composite + toggle, portal crops the band
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -287,7 +287,7 @@ Discord roles); the publish path must start with the user's own name.
|
||||
- [ ] dock + README; remove streamers from configure.py; delete `streamers.json`
|
||||
- [ ] test: OBS with an app password; Go Live with no key; a non-streamer gets denied
|
||||
|
||||
### Phase 12 — frame-accurate timecode for multicam via an overscan band (planned)
|
||||
### Phase 12 — frame-accurate timecode for multicam via an overscan band (built; deploy pending)
|
||||
Target: clips from several streamers align to the frame (16.7 ms @60) on a multicam timeline; the game
|
||||
image is untouched and finals carry nothing. Reference clock = the server; streamer PC clocks are never trusted.
|
||||
|
||||
@@ -311,11 +311,11 @@ permanent reference is needed for long sessions, not just a start burst.
|
||||
- **Viewing**: live portal crops the band with CSS; Jellyfin shows a thin strip at the bottom edge (VHS-style).
|
||||
Editors export at the game resolution (2560×1440), which drops the band.
|
||||
- MediaMTX `recordPath` with `%f` (microseconds) for the fallback; plugin `ItemTimestamp` prefers `creation_time`.
|
||||
- [ ] `/clock/` page: offset measurement, strip encoder, readable clock, band layout
|
||||
- [ ] dock: overscan band setup + browser source via obs-websocket; opt-out
|
||||
- [ ] portal Go Live: band composite (toggle); portal viewer: CSS crop of the band
|
||||
- [ ] sweep: `bin/timecode-decode.py` (ffmpeg frames → decode → offset + drift), tmcd + creation_time, `.tc.json`
|
||||
- [ ] MediaMTX `%f`; plugin timestamp update; README editor workflow (multicam: timecode → audio cross-check;
|
||||
- [x] `/clock/` page: offset measurement, strip encoder, readable clock, band layout
|
||||
- [x] dock: overscan band setup + browser source via obs-websocket; opt-out
|
||||
- [x] portal Go Live: band composite (toggle); portal viewer: CSS crop of the band
|
||||
- [x] sweep: `bin/vgstrip.py` (ffmpeg frames → decode → offset + drift), tmcd + creation_time, `<stem>.json` sidecar (read by the plugin)
|
||||
- [x] MediaMTX `%f`; plugin timestamp update; README editor workflow (multicam: timecode → audio cross-check;
|
||||
export at 2560×1440)
|
||||
- rejected: LTC audio (SRT multitrack + per-PC generator); clock inside the picture; cropping at remux (re-encode)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user