Files
CLI-Anything/cli-anything-plugin/guides/timecode-precision.md
2026-03-30 09:16:10 +00:00

23 lines
728 B
Markdown

# Timecode Precision
Non-integer frame rates (29.97fps = 30000/1001) cause cumulative rounding errors. Follow these rules to avoid drift.
## Use `round()`, Not `int()`
For float-to-frame conversion:
- `int(9000 * 29.97)`**wrong**, truncates and loses frames
- `round(9000 * 29.97)`**correct**, gets the right answer
## Use Integer Arithmetic for Timecode Display
Convert frames → total milliseconds via:
```python
total_ms = round(frames * fps_den * 1000 / fps_num)
```
Then decompose with integer division. Avoid intermediate floats that drift over long durations.
## Accept ±1 Frame Tolerance
In roundtrip tests at non-integer FPS, exact equality is mathematically impossible. Accept ±1 frame tolerance.