The frame number. For VFR video or Timecode-backed objects, this is an approximation based on the average framerate. Prefer using `pts` and `time_base` for precise timing.
(self)
| 261 | |
| 262 | @property |
| 263 | def frame_num(self) -> int: |
| 264 | """The frame number. For VFR video or Timecode-backed objects, this is an approximation |
| 265 | based on the average framerate. Prefer using `pts` and `time_base` for precise timing.""" |
| 266 | if isinstance(self._time, Timecode): |
| 267 | # Calculate approximate frame number from seconds and framerate. |
| 268 | if self._rate is not None: |
| 269 | return round(self._time.seconds * float(self._rate)) |
| 270 | # No framerate available - return estimate based on time. |
| 271 | return round(self._time.seconds) |
| 272 | if isinstance(self._time, _Seconds): |
| 273 | return self._seconds_to_frames(self._time.value) |
| 274 | return self._time.value |
| 275 | |
| 276 | @property |
| 277 | def frame_rate(self) -> Fraction | None: |
nothing calls this directly
no test coverage detected