Video Analysis Workflow
Analysis Commands
# 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 |
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 accurate for 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 accurate for 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
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")