The objects described on Document and
objects link into a graph. Paths below are element paths inside an object, and an
arrow means “follow the ObjectRef or ObjectURef to another
object”. The source is py_premiere;
names not covered by it are left out.
Time
Every time is an integer count of ticks, 254,016,000,000 ticks a
second, the unit of Premiere’s scripting Time object. The number
divides evenly by all the common frame rates and audio sample rates. A frame rate is
stored as ticks per frame in a FrameRate element: 10,584,000,000 for 24
frames a second, 10,160,640,000 for 25, 8,467,200,000 for 30 and 8,475,667,200 for
29.97. The time −91,445,760,000,000,000 (minus 100 hours) marks the single stored value
of a parameter that is not keyframed.
Project items
| Element | Item |
|---|---|
RootProjectItem | The root bin (scripting type 3, root). |
BinProjectItem | A bin (type 2). |
SmartBinProjectItem | A search bin, which wraps a BinProjectItem and reports as a bin. |
ClipProjectItem | A clip, including a sequence’s item in the Project panel (type 1). |
A bin’s children are the references in ProjectItemContainer/Items/Item.
Every item has ProjectItem/Name and ProjectItem/Node with an
ID and a Properties bag (the colour label is
Column.PropertyText.Label there).
A clip item’s MasterClip leads to its media:
ClipProjectItem/MasterClip→ master clip.Clips/Clip→ one clip per stream (a video clip and audio clips).Clip/Source→ a media source object, whoseOriginalDurationis the length in ticks.MediaSource/Media→ theMediaobject, whoseFilePathis the path of the file. Generators such as black video and adjustment layers store a number there instead of a path.
A sequence’s clip item has SequenceSource/Sequence in its source, an
ObjectURef to the Sequence object. A start-time override is
Media/AlternateStart with UseAlternateStart.
Sequences and tracks
A Sequence lists its track groups in
TrackGroups/TrackGroup; each pair’s Second refers to the group
object.
| Group | Fields used |
|---|---|
VideoTrackGroup | TrackGroup/FrameRate (the sequence timebase, ticks per frame) and FrameRect, written left,top,width,height as in 0,0,1920,1080. |
AudioTrackGroup | TrackGroup/FrameRate (the audio timebase, in ticks) and NumAdaptiveChannels. |
DataTrackGroup | Caption tracks. |
A group’s tracks are the references in TrackGroup/Tracks/Track. In a
track, ClipTrack/Track/ID and ClipTrack/Track/Index give its
identity and position, ClipTrack/ClipItems/TrackItems/TrackItem lists its
clips and ClipTrack/TransitionItems/TrackItems/TrackItem its
transitions.
Track items
| Path | Meaning |
|---|---|
ClipTrackItem/TrackItem/Start | Start on the sequence timeline, in ticks. Left out when 0. |
ClipTrackItem/TrackItem/End | End on the timeline, in ticks. |
ClipTrackItem/IsMuted | Muted flag. |
ClipTrackItem/SubClip → Name | The name shown on the timeline. |
SubClip Clip → Clip/InPoint, Clip/OutPoint | The in and out points in the source, in ticks. |
Clip/PlaybackSpeed | Speed as a factor, left out at 1. When present, the stored in and out points are in timeline terms: the source time is the stored value divided by the speed, truncated. |
Clip/PlayBackwards | Reverse playback. |
Clip/TimeRemapping | Reference to a time-remapping object whose Keyframes is a speed parameter. |
ClipTrackItem/ComponentOwner/Components | Reference to the component chain: the effects. |
Markers, on clips and sequences, are reached through MarkerOwner/Markers
and then Markers/Marker, each pair’s Second referring to a
marker object.
Components and parameters
A component chain holds the effects applied to a clip. Premiere stores only the
components that differ from their defaults; the fixed Motion and Opacity effects are
created when the project is opened unless they were changed. Each parameter is an object
such as VideoComponentParam with these leaves:
| Element | Meaning |
|---|---|
Name | Display name. |
ParameterID | The parameter’s number inside its effect. |
StartKeyframe | The static value, as one keyframe entry at the −100 hour time. |
Keyframes | The keyframes, entries separated and ended by ;. Empty when not animated. |
CurrentValue | The static value again, at full double precision. |
LowerBound, UpperBound | The valid range. |
IsTimeVarying | Whether the parameter is keyframed. Audio parameters drop it and rely on Keyframes. |
IsLocked, DiscontinuousInterpolate, ParameterControlType | Lock state, step interpolation (popups), and the kind of control. |
Value encodings
| Parameter kind | Value field |
|---|---|
| Number (slider, angle, audio level) | A 32-bit float in decimal with up to 12 significant digits; whole numbers end with a dot (100.), never exponent form. |
| Popup | A bare integer (4). |
| Checkbox | true or false. |
| 2D point | x:y. |
| Colour | A 64-bit integer laid out 0xAA00RR00GG00BB00: each 8-bit channel in the high byte of a 16-bit word, alpha first. |
| Text, shape paths, Lumetri and others | Binary payloads in base64; only text and shape paths are publicly decoded. |
Keyframe entries
A scalar entry has eight comma-separated fields:
| Field | Meaning |
|---|---|
| 1 | Time in ticks. |
| 2 | Value. |
| 3 | Incoming interpolation (codes below). |
| 4 | Outgoing interpolation; 0 in the keys py_premiere writes. |
| 5 | Incoming slope, in units a second. |
| 6 | Incoming influence, a fraction; 1/6 by default. |
| 7 | Outgoing slope. |
| 8 | Outgoing influence; 1/6, or 1/3 after a hold key. |
A 2D point entry has fourteen fields: the same eight with x:y as the value,
then a constant pair, then the four spatial handles (in x, in y, out x, out y).
| Code | Interpolation |
|---|---|
| 0 | Linear |
| 1 | Ease in (obsolete) |
| 2 | Ease out (obsolete) |
| 3 | Ease in and out (obsolete) |
| 4 | Hold |
| 5 | Bezier |
| 6 | Time |
| 7 | Time transition start |
| 8 | Time transition end |
Example: 0,0.,0,0,0,0.16666666666666666,50,0.16666666666666666;254016000000,50.,0,0,50,0.16666666666666666,0,0.16666666666666666;
is a linear ramp from 0 at 0 seconds to 50 at 1 second, a slope of 50 a second.
Blend modes
A clip’s blend mode is stored twice in its Opacity effect, in two popup parameters both named Blend Mode: parameter 3 holds the menu position (0 to 31, with 2, 8, 14, 22 and 27 unused because they are separators in the menu) and parameter 2 the value the scripting interfaces use (0 to 27).
| Mode | Parameter 3 | Parameter 2 |
|---|---|---|
| Normal | 0 | 18 |
| Dissolve | 1 | 6 |
| Darken | 3 | 3 |
| Multiply | 4 | 17 |
| Color Burn | 5 | 1 |
| Linear Burn | 6 | 13 |
| Darker Color | 7 | 4 |
| Lighten | 9 | 11 |
| Screen | 10 | 22 |
| Color Dodge | 11 | 2 |
| Linear Dodge (Add) | 12 | 14 |
| Lighter Color | 13 | 12 |
| Overlay | 15 | 19 |
| Soft Light | 16 | 23 |
| Hard Light | 17 | 8 |
| Vivid Light | 18 | 24 |
| Linear Light | 19 | 15 |
| Pin Light | 20 | 20 |
| Hard Mix | 21 | 9 |
| Difference | 23 | 5 |
| Exclusion | 24 | 7 |
| Subtract | 25 | 25 |
| Divide | 26 | 26 |
| Hue | 28 | 10 |
| Saturation | 29 | 21 |
| Color | 30 | 0 |
| Luminosity | 31 | 16 |
Caption formats
A caption track’s format is stored as Format (low word) and
SubFormat (high word); both are left out for subtitles.
| Value | Format |
|---|---|
| 0 | Subtitle |
| 1 | CEA-608 |
| 2 | CEA-708 |
| 3 | Teletext |
| 0x10003 | EBU subtitle (Teletext sub-format 1) |
| 0x20003 | OP-42 (Teletext sub-format 2) |
| 0x30003 | OP-47 (Teletext sub-format 3) |
Not publicly known
Hundreds of other classes (render and export settings, Lumetri, audio mixer state, multicam, Essential Graphics templates, team project data) have no public description. Their element names are readable, but their meaning and their changes between versions are undocumented.