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>
37 lines
2.0 KiB
Markdown
37 lines
2.0 KiB
Markdown
# 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.
|
||
- **2–3 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 **5–30 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 5–30 s. |
|
||
| drifty / foot-skating result | Feet left the frame, or baggy clothes — re-film closer to protocol. |
|