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>
2.0 KiB
2.0 KiB
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
- Start in a T-pose, hold ~1 s. Arms straight out, legs together, facing the phone.
- Do one move — a walk, a DJ scratch, a pick-up. One move per take.
- End in a T-pose, hold ~1 s.
- 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 DmocapCLI do it). Ingest validates, normalizes to 30fps, and ships it to the m3ultra queue. Rejects (portrait, no feet, garbage) land incapture/rejected/with a reason incapture/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. |