Serialized Data Documentation

This documents all the OpenTimelineIO classes that serialize to and from JSON, omitting SchemaDef plugins. This document is automatically generated by running:

src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py

or by running:

make doc-model

It is part of the unit tests suite and should be updated whenever the schema changes. If it needs to be updated and this file regenerated, run:

make doc-model-update

Class Documentation

Module: opentimelineio.adapters

Adapter.1

full module path: opentimelineio.adapters.Adapter

documentation:

Adapters convert between OTIO and other formats.

    Note that this class is not subclassed by adapters. Rather, an adapter is
    a python module that implements at least one of the following functions:

    .. code-block:: python

        write_to_string(input_otio)
        write_to_file(input_otio, filepath) (optionally inferred)
        read_from_string(input_str)
        read_from_file(filepath) (optionally inferred)

    ...as well as a small json file that advertises the features of the adapter
    to OTIO.  This class serves as the wrapper around these modules internal
    to OTIO.  You should not need to extend this class to create new adapters
    for OTIO.

    For more information: https://opentimelineio.readthedocs.io/en/latest/tutorials/write-an-adapter.html. # noqa
    

parameters:

  • execution_scope: Describes whether this adapter is executed in the current python process or in a subshell. Options are: [‘in process’, ‘out of process’].

  • filepath: Absolute path or relative path to adapter module from location of json.

  • name: Adapter name.

  • suffixes: File suffixes associated with this adapter.

Module: opentimelineio.core

Composable.1

full module path: opentimelineio.core.Composable

documentation:


An object that can be composed within a :class:`~Composition` (such as :class:`~Track` or :class:`.Stack`).

parameters:

  • metadata:

  • name:

Composition.1

full module path: opentimelineio.core.Composition

documentation:


Base class for an :class:`~Item` that contains other :class:`~Item`\s.

Should be subclassed (for example by :class:`.Track` and :class:`.Stack`), not used directly.

parameters:

  • effects:

  • enabled: If true, an Item contributes to compositions. For example, when an audio/video clip is enabled=false the clip is muted/hidden.

  • markers:

  • metadata:

  • name:

  • source_range:

Item.1

full module path: opentimelineio.core.Item

documentation:

None

parameters:

  • effects:

  • enabled: If true, an Item contributes to compositions. For example, when an audio/video clip is enabled=false the clip is muted/hidden.

  • markers:

  • metadata:

  • name:

  • source_range:

MediaReference.1

full module path: opentimelineio.core.MediaReference

documentation:

None

parameters:

  • available_image_bounds:

  • available_range:

  • metadata:

  • name:

SerializableObjectWithMetadata.1

full module path: opentimelineio.core.SerializableObjectWithMetadata

documentation:

None

parameters:

  • metadata:

  • name:

Module: opentimelineio.hooks

HookScript.1

full module path: opentimelineio.hooks.HookScript

documentation:

None

parameters:

  • execution_scope: Describes whether this adapter is executed in the current python process or in a subshell. Options are: [‘in process’, ‘out of process’].

  • filepath: Absolute path or relative path to adapter module from location of json.

  • name: Adapter name.

Module: opentimelineio.media_linker

MediaLinker.1

full module path: opentimelineio.media_linker.MediaLinker

documentation:

None

parameters:

  • execution_scope: Describes whether this adapter is executed in the current python process or in a subshell. Options are: [‘in process’, ‘out of process’].

  • filepath: Absolute path or relative path to adapter module from location of json.

  • name: Adapter name.

Module: opentimelineio.opentime

RationalTime.1

full module path: opentimelineio.opentime.RationalTime

documentation:


The RationalTime class represents a measure of time of :math:`rt.value/rt.rate` seconds.
It can be rescaled into another :class:`~RationalTime`'s rate.

parameters:

  • rate:

  • value:

TimeRange.1

full module path: opentimelineio.opentime.TimeRange

documentation:


The TimeRange class represents a range in time. It encodes the start time and the duration,
meaning that :meth:`end_time_inclusive` (last portion of a sample in the time range) and
:meth:`end_time_exclusive` can be computed.

parameters:

  • duration:

  • start_time:

TimeTransform.1

full module path: opentimelineio.opentime.TimeTransform

documentation:

1D transform for :class:`~RationalTime`. Has offset and scale.

parameters:

  • offset:

  • rate:

  • scale:

Module: opentimelineio.plugins

PluginManifest.1

full module path: opentimelineio.plugins.Manifest

documentation:

Defines an OTIO plugin Manifest.

    This is considered an internal OTIO implementation detail.

    A manifest tracks a collection of plugins and enables finding them by name
    or other features (in the case of adapters, what file suffixes they
    advertise support for).

    For more information, consult the documenation.
    

parameters:

  • adapters: Adapters this manifest describes.

  • hook_scripts: Scripts that can be attached to hooks.

  • hooks: Hooks that hooks scripts can be attached to.

  • media_linkers: Media Linkers this manifest describes.

  • schemadefs: Schemadefs this manifest describes.

SerializableObject.1

full module path: opentimelineio.plugins.PythonPlugin

documentation:

A class of plugin that is encoded in a python module, exposed via a
    manifest.
    

parameters:

  • execution_scope: Describes whether this adapter is executed in the current python process or in a subshell. Options are: [‘in process’, ‘out of process’].

  • filepath: Absolute path or relative path to adapter module from location of json.

  • name: Adapter name.

Module: opentimelineio.schema

Clip.2

full module path: opentimelineio.schema.Clip

documentation:


A :class:`~Clip` is a segment of editable media (usually audio or video).

Contains a :class:`.MediaReference` and a trim on that media reference.

parameters:

  • active_media_reference_key:

  • effects:

  • enabled: If true, an Item contributes to compositions. For example, when an audio/video clip is enabled=false the clip is muted/hidden.

  • markers:

  • media_references:

  • metadata:

  • name:

  • source_range:

Effect.1

full module path: opentimelineio.schema.Effect

documentation:

None

parameters:

  • effect_name:

  • metadata:

  • name:

ExternalReference.1

full module path: opentimelineio.schema.ExternalReference

documentation:

None

parameters:

  • available_image_bounds:

  • available_range:

  • metadata:

  • name:

  • target_url:

FreezeFrame.1

full module path: opentimelineio.schema.FreezeFrame

documentation:

Hold the first frame of the clip for the duration of the clip.

parameters:

  • effect_name:

  • metadata:

  • name:

  • time_scalar: Linear time scalar applied to clip. 2.0 means the clip occupies half the time in the parent item, i.e. plays at double speed, 0.5 means the clip occupies twice the time in the parent item, i.e. plays at half speed.

Note that adjusting the time_scalar of a :class:~LinearTimeWarp does not affect the duration of the item this effect is attached to. Instead it affects the speed of the media displayed within that item.

Gap.1

full module path: opentimelineio.schema.Gap

documentation:

None

parameters:

  • effects:

  • enabled: If true, an Item contributes to compositions. For example, when an audio/video clip is enabled=false the clip is muted/hidden.

  • markers:

  • metadata:

  • name:

  • source_range:

GeneratorReference.1

full module path: opentimelineio.schema.GeneratorReference

documentation:

None

parameters:

  • available_image_bounds:

  • available_range:

  • generator_kind:

  • metadata:

  • name:

  • parameters:

ImageSequenceReference.1

full module path: opentimelineio.schema.ImageSequenceReference

documentation:


An ImageSequenceReference refers to a numbered series of single-frame image files. Each file can be referred to by a URL generated by the :class:`~ImageSequenceReference`.

Image sequences can have URLs with discontinuous frame numbers, for instance if you've only rendered every other frame in a sequence, your frame numbers may be 1, 3, 5, etc. This is configured using the ``frame_step`` attribute. In this case, the 0th image in the sequence is frame 1 and the 1st image in the sequence is frame 3. Because of this there are two numbering concepts in the image sequence, the image number and the frame number.

Frame numbers are the integer numbers used in the frame file name. Image numbers are the 0-index based numbers of the frames available in the reference. Frame numbers can be discontinuous, image numbers will always be zero to the total count of frames minus 1.

An example for 24fps media with a sample provided each frame numbered 1-1000 with a path ``/show/sequence/shot/sample_image_sequence.%04d.exr`` might be

.. code-block:: json

    {
      "available_range": {
        "start_time": {
          "value": 0,
          "rate": 24
        },
        "duration": {
          "value": 1000,
          "rate": 24
        }
      },
      "start_frame": 1,
      "frame_step": 1,
      "rate": 24,
      "target_url_base": "file:///show/sequence/shot/",
      "name_prefix": "sample_image_sequence.",
      "name_suffix": ".exr"
      "frame_zero_padding": 4,
    }

The same duration sequence but with only every 2nd frame available in the sequence would be

.. code-block:: json

    {
      "available_range": {
        "start_time": {
          "value": 0,
          "rate": 24
        },
        "duration": {
          "value": 1000,
          "rate": 24
        }
      },
      "start_frame": 1,
      "frame_step": 2,
      "rate": 24,
      "target_url_base": "file:///show/sequence/shot/",
      "name_prefix": "sample_image_sequence.",
      "name_suffix": ".exr"
      "frame_zero_padding": 4,
    }

A list of all the frame URLs in the sequence can be generated, regardless of frame step, with the following list comprehension

.. code-block:: python

    [ref.target_url_for_image_number(i) for i in range(ref.number_of_images_in_sequence())]

Negative ``start_frame`` is also handled. The above example with a ``start_frame`` of ``-1`` would yield the first three target urls as:

- ``file:///show/sequence/shot/sample_image_sequence.-0001.exr``
- ``file:///show/sequence/shot/sample_image_sequence.0000.exr``
- ``file:///show/sequence/shot/sample_image_sequence.0001.exr``

parameters:

  • available_image_bounds:

  • available_range:

  • frame_step: Step between frame numbers in file names.

  • frame_zero_padding: Number of digits to pad zeros out to in frame numbers.

  • metadata:

  • missing_frame_policy: Directive for how frames in sequence not found during playback or rendering should be handled.

  • name:

  • name_prefix: Everything in the file name leading up to the frame number.

  • name_suffix: Everything after the frame number in the file name.

  • rate: Frame rate if every frame in the sequence were played back.

  • start_frame: The first frame number used in file names.

  • target_url_base: Everything leading up to the file name in the target_url.

LinearTimeWarp.1

full module path: opentimelineio.schema.LinearTimeWarp

documentation:


A time warp that applies a linear speed up or slow down across the entire clip.

parameters:

  • effect_name:

  • metadata:

  • name:

  • time_scalar: Linear time scalar applied to clip. 2.0 means the clip occupies half the time in the parent item, i.e. plays at double speed, 0.5 means the clip occupies twice the time in the parent item, i.e. plays at half speed.

Note that adjusting the time_scalar of a :class:~LinearTimeWarp does not affect the duration of the item this effect is attached to. Instead it affects the speed of the media displayed within that item.

Marker.2

full module path: opentimelineio.schema.Marker

documentation:


A marker indicates a marked range of time on an item in a timeline, usually with a name, color or other metadata.

The marked range may have a zero duration. The marked range is in the owning item's time coordinate system.

parameters:

  • color: Color string for this marker (for example: ‘RED’), based on the :class:~Color enum.

  • marked_range: Range this marker applies to, relative to the :class:.Item this marker is attached to (e.g. the :class:.Clip or :class:.Track that owns this marker).

  • metadata:

  • name:

MissingReference.1

full module path: opentimelineio.schema.MissingReference

documentation:


Represents media for which a concrete reference is missing.

Note that a :class:`~MissingReference` may have useful metadata, even if the location of the media is not known.

parameters:

  • available_image_bounds:

  • available_range:

  • metadata:

  • name:

SerializableCollection.1

full module path: opentimelineio.schema.SerializableCollection

documentation:


A container which can hold an ordered list of any serializable objects. Note that this is not a :class:`.Composition` nor is it :class:`.Composable`.

This container approximates the concept of a bin - a collection of :class:`.SerializableObject`\s that do
not have any compositional meaning, but can serialize to/from OTIO correctly, with metadata and
a named collection.

A :class:`~SerializableCollection` is useful for serializing multiple timelines, clips, or media references to a single file.

parameters:

  • metadata:

  • name:

Stack.1

full module path: opentimelineio.schema.Stack

documentation:

None

parameters:

  • effects:

  • enabled: If true, an Item contributes to compositions. For example, when an audio/video clip is enabled=false the clip is muted/hidden.

  • markers:

  • metadata:

  • name:

  • source_range:

TimeEffect.1

full module path: opentimelineio.schema.TimeEffect

documentation:

Base class for all effects that alter the timing of an item.

parameters:

  • effect_name:

  • metadata:

  • name:

Timeline.1

full module path: opentimelineio.schema.Timeline

documentation:

None

parameters:

  • global_start_time:

  • metadata:

  • name:

  • tracks:

Track.1

full module path: opentimelineio.schema.Track

documentation:

None

parameters:

  • effects:

  • enabled: If true, an Item contributes to compositions. For example, when an audio/video clip is enabled=false the clip is muted/hidden.

  • kind:

  • markers:

  • metadata:

  • name:

  • source_range:

Transition.1

full module path: opentimelineio.schema.Transition

documentation:

Represents a transition between the two adjacent items in a :class:`.Track`. For example, a cross dissolve or wipe.

parameters:

  • in_offset: Amount of the previous clip this transition overlaps, exclusive.

  • metadata:

  • name:

  • out_offset: Amount of the next clip this transition overlaps, exclusive.

  • transition_type: Kind of transition, as defined by the :class:Type enum.

SchemaDef.1

full module path: opentimelineio.schema.SchemaDef

documentation:

None

parameters:

  • execution_scope: Describes whether this adapter is executed in the current python process or in a subshell. Options are: [‘in process’, ‘out of process’].

  • filepath: Absolute path or relative path to adapter module from location of json.

  • name: Adapter name.