Video Analysis Workflow
Analysis Commands
bash
# CMJ analysis uv run kinemotion cmj-analyze <video> [--output debug.mp4] # Drop Jump analysis uv run kinemotion dropjump-analyze <video> [--output debug.mp4] # Batch processing uv run kinemotion cmj-analyze videos/*.mp4 --batch --workers 4
Quality Presets
| Preset | Use Case | Trade-off |
|---|---|---|
fast | Quick preview, large batches | Lower accuracy |
balanced | Default, most use cases | Good accuracy/speed |
accurate | Validation, research | Best accuracy, slower |
bash
uv run kinemotion cmj-analyze video.mp4 --quality accurate
Debug Output
Always use --output debug.mp4 when:
- •Metrics seem incorrect
- •Troubleshooting pose detection
- •Validating new videos
- •Training coaches on video quality
The debug video shows:
- •Skeleton overlay with joint angles
- •Phase markers (takeoff, landing, peak)
- •Real-time metrics display
Camera Angle Recommendations
| Angle | Recommendation | Reason |
|---|---|---|
| 45° oblique | Recommended | Both legs clearly visible, accurate tracking |
| 90° lateral | Not recommended | MediaPipe confuses left/right feet (occlusion) |
| Front/back | Not recommended | Depth ambiguity for sagittal plane motion |
Troubleshooting
No Takeoff Detected
- •Verify video contains complete jump (before, during, after)
- •Check athlete is fully visible throughout
- •Try
--quality accuratefor stricter detection - •Review debug video for landmark quality
Invalid Metrics
- •Video may be too short (need full jump cycle)
- •Athlete may be partially occluded
- •Poor lighting affecting pose detection
- •Camera shake causing landmark jitter
Jittery Landmarks
- •Check lighting conditions (avoid backlighting)
- •Ensure stable camera (tripod recommended)
- •Verify athlete clothing contrast with background
- •Try
--quality accuratefor better filtering
Rotation Issues (Mobile Videos)
- •Mobile videos often have rotation metadata
- •kinemotion handles this automatically via
video_io.py - •If issues persist, pre-process with:
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
Video Requirements
| Requirement | Specification |
|---|---|
| Frame rate | 30+ fps (60+ preferred) |
| Resolution | 720p minimum |
| Duration | Full jump cycle visible |
| Lighting | Even, front-lit preferred |
| Background | Contrasting with athlete |
| Camera | Stable, tripod recommended |
Output Metrics
CMJ Metrics
- •
jump_height_cm: Calculated from flight time - •
flight_time_ms: Time in air - •
countermovement_depth_cm: Lowest point before takeoff - •
takeoff_velocity_m_s: Velocity at ground leave - •
triple_extension: Hip, knee, ankle angles at takeoff
Drop Jump Metrics
- •
ground_contact_time_ms: Time on ground after drop - •
flight_time_ms: Time in air after contact - •
reactive_strength_index: RSI = flight_time / contact_time - •
drop_height_cm: Initial drop height (if detectable)
Python API Alternative
python
from kinemotion import process_cmj_video, process_dropjump_video
# CMJ
metrics = process_cmj_video("video.mp4", quality="balanced")
# Drop Jump
metrics = process_dropjump_video("video.mp4", quality="balanced")