mocapgod/docs/CAPTURE.md
type-two 468f35be7d Lane A: capture protocol + ingest pipeline
docs/CAPTURE.md — one-page filming protocol (landscape, feet in frame, T-pose
bookends, 5-30s takes, AirDrop to capture/inbox/).

ingest.py — scans capture/inbox/, probes each clip (ffprobe, display-orientation
aware so phone rotation tags are respected), rejects portrait/malformed to
capture/rejected/ with a reason, normalizes the rest to 30fps h264 (audio
stripped), renames YYYYMMDD_<name>.mp4, rsyncs to the m3ultra pose queue, and
logs every disposition to capture/LEDGER.tsv. Failed ships keep the normalized
file in capture/staged/ so a re-run retries without re-encoding.
--selfcheck exercises probe+validate on synthesized landscape/portrait clips.

Verified end-to-end: inbox drop -> one command -> clip in m3ultra queue, portrait
rejected with clear error, ledger rows written.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 00:44:56 +10:00

37 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Filming protocol — read once, keep on the tripod
One page. Follow it and the pose engine has an easy time; break it and Lane C fights soup.
## The shot
- **Phone landscape**, on a tripod or leaned so it can't move. Never handheld, never portrait.
- **1080p, 60fps.** 4K is wasted — pose models downscale anyway. 60fps → we resample to 30.
- **Whole body in frame the entire take — feet included.** If a foot leaves the frame, the
ground contact is lost and the clip drifts. Frame with headroom top and bottom.
- **23 m from the phone.** Close enough to fill the frame, far enough that a step doesn't
clip you out.
- **Even light, plain-ish background.** No harsh single-side shadow, no busy patterns behind you.
- **Fitted clothes.** Baggy hoodies and swishy pants = joint error. Snug beats stylish here.
## The take
1. **Start in a T-pose, hold ~1 s.** Arms straight out, legs together, facing the phone.
2. Do **one move** — a walk, a DJ scratch, a pick-up. One move per take.
3. **End in a T-pose, hold ~1 s.**
4. Keep takes **530 s.** Short and clean beats long and mushy. Re-film rather than salvage.
The T-pose bookends are not optional: they're the calibration reference and the anchor Lane C
uses to auto-trim the clip. No bookends → manual trimming.
## Getting it to the pipeline
- **AirDrop** the clip from the phone to **ultra**, save into
`~/Documents/MOCAPGOD/capture/inbox/`.
- Then run **`python3 ingest.py`** (or let the Lane D `mocap` CLI do it). Ingest validates,
normalizes to 30fps, and ships it to the m3ultra queue. Rejects (portrait, no feet, garbage)
land in `capture/rejected/` with a reason in `capture/LEDGER.tsv` — check there if a clip vanishes.
## Common rejections (and the fix)
| Symptom | Fix |
|---|---|
| `portrait` | Rotate the phone. Landscape only. |
| `too short / malformed` | Re-film; hold the T-poses, aim for 530 s. |
| drifty / foot-skating result | Feet left the frame, or baggy clothes — re-film closer to protocol. |