Skip to content

Commit cb924ad

Browse files
authored
Merge pull request #66 from nickswalker/feature/hfr
Support SMPTE ST12-3 high frame rate variants
2 parents c6714d1 + d9b07cd commit cb924ad

3 files changed

Lines changed: 235 additions & 59 deletions

File tree

README.md

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
About
22
-----
33

4-
Python module for manipulating SMPTE timecode. Supports any arbitrary integer frame
5-
rates and some default str values of 23.976, 23.98, 24, 25, 29.97, 30, 50, 59.94, 60
6-
frame rates and milliseconds (1000 fps) and fractional frame rates like "30001/1001".
4+
Python module for manipulating SMPTE timecode. Supports all formats in the ST12
5+
standard, as well as any arbitrary integer frame rates and some default str
6+
values of 23.976, 23.98, 24, 25, 29.97, 30, 50, 59.94, 60 frame rates and
7+
milliseconds (1000 fps) and fractional frame rates like "30000/1001".
78

8-
This library is a fork of the original PyTimeCode python library. You should not use
9-
the two library together (PyTimeCode is not maintained and has known bugs).
9+
This library is a fork of the original PyTimeCode python library. You should
10+
not use the two library together (PyTimeCode is not maintained and has known
11+
bugs).
1012

1113
The math behind the drop frame calculation is based on the
1214
[blog post of David Heidelberger](http://www.davidheidelberger.com/blog/?p=29).
1315

14-
Simple math operations like, addition, subtraction, multiplication or division with an
15-
integer value or with a timecode is possible. Math operations between timecodes with
16-
different frame rates are supported. So:
16+
Simple math operations like, addition, subtraction, multiplication or division
17+
with an integer value or with a timecode is possible. Math operations between
18+
timecodes with different frame rates are supported. So:
1719

1820
```py
1921
from timecode import Timecode
@@ -26,8 +28,8 @@ assert tc3.frames == 12
2628
assert tc3 == '00:00:00:11'
2729
```
2830

29-
Creating a Timecode instance with a start timecode of '00:00:00:00' will result a
30-
timecode object where the total number of frames is 1. So:
31+
Creating a Timecode instance with a start timecode of '00:00:00:00' will result
32+
a timecode object where the total number of frames is 1. So:
3133

3234
```py
3335
tc4 = Timecode('24', '00:00:00:00')
@@ -41,14 +43,14 @@ assert tc4.frame_number == 0
4143
```
4244

4345
> [!NOTE]
44-
> A common misconception is that `00:00:00:00` should have 0 frames. This is wrong
45-
> because Timecode is a label given for each frame in a media, and it happens to be
46-
> using numbers which are seemingly incremented one after another. So, for a Timecode to
47-
> exist there should be a frame. and 00:00:00:00 is generally the label given to the
48-
> first frame.
46+
> A common misconception is that `00:00:00:00` should have 0 frames. This is
47+
> wrong because Timecode is a label given for each frame in a media, and it
48+
> happens to be using numbers which are seemingly incremented one after
49+
> another. So, for a Timecode to exist there should be a frame. and 00:00:00:00
50+
> is generally the label given to the first frame.
4951
50-
Frame rates 29.97 and 59.94 are always drop frame, and all the others are non drop
51-
frame.
52+
Frame rates 29.97, 59.94 and 119.88 are always drop frame, and all the others
53+
are non drop frame.
5254

5355
The timecode library supports fractional frame rates passed as a string:
5456

@@ -67,8 +69,8 @@ assert repr(tc6) == '19:23:14:23'
6769
This is useful for parsing timecodes stored in OpenEXR's and extracted through
6870
OpenImageIO for instance.
6971

70-
Timecode also supports passing start timecodes formatted like HH:MM:SS.sss where SS.sss
71-
is seconds and fractions of seconds:
72+
Timecode also supports passing start timecodes formatted like HH:MM:SS.sss
73+
where SS.sss is seconds and fractions of seconds:
7274

7375
```py
7476
tc8 = Timecode(25, '00:00:00.040')
@@ -87,10 +89,11 @@ assert repr(tc9) == '19:23:14.958'
8789

8890
Fraction of seconds is useful when working with tools like FFmpeg.
8991

90-
The SMPTE standard limits the timecode with 24 hours. Even though, Timecode instance
91-
will show the current timecode inline with the SMPTE standard, it will keep counting the
92-
total frames without clipping it.
92+
The SMPTE standard limits the timecode with 24 hours. Even though, Timecode
93+
instance will show the current timecode inline with the SMPTE standard, it will
94+
keep counting the total frames without clipping it.
9395

94-
Please report any bugs to the [GitHub](https://github.com/eoyilmaz/timecode) page.
96+
Please report any bugs to the [GitHub](https://github.com/eoyilmaz/timecode)
97+
page.
9598

9699
Copyright 2014 Joshua Banton and PyTimeCode developers.

0 commit comments

Comments
 (0)