Skip to content
Open Source API and interchange format for editorial timeline information.
Python C++ Swift Objective-C++ Objective-C Mathematica Other
Branch: master
Clone or download

Latest commit

KarthikRIyer Use std::fabs() instead of abs() in rationalTime.cpp (#721)
* Use std::abs() instead of abs()

* Use std::fabs instead of std::abs
Latest commit eaccea3 May 29, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
contrib/opentimelineio_contrib Addressing a handful of lint issues. (#702) May 14, 2020
docs Clean up developer quickstart (#717) May 22, 2020
examples Add List of Supported Formats to Help Text (#676) Apr 13, 2020
maintainers Created (#685) Apr 20, 2020
src Use std::fabs() instead of abs() in rationalTime.cpp (#721) May 29, 2020
tests Add support for predicates from Allen's Interval Algebra for TimeRange ( May 20, 2020
.codecov.yml Replace OTIO Core with python-wrapped C++ (#540) Jul 22, 2019
.gitignore Ignore xcode and vscode user data (#599) Sep 30, 2019
.gitlab-ci.yml Updated build to include Python 3.6 (#291) Jul 30, 2018
.gitmodules Replace OTIO Core with python-wrapped C++ (#540) Jul 22, 2019
.readthedocs.yml RTD is breaking on StrictVersion in (#615) Nov 7, 2019
.travis.yml Replace OTIO Core with python-wrapped C++ (#540) Jul 22, 2019
CMakeLists.txt Fix the windows build (#669) Mar 24, 2020 Added Code of Conduct (#234) Feb 22, 2018 Wiki removal (#340) Oct 10, 2018 Created (#685) Apr 20, 2020
LICENSE.txt Burnin adapter (#167) Oct 5, 2017 Created (#685) Apr 20, 2020
Makefile Fix documentation on read the docs (#715) May 22, 2020
NOTICE.txt Updating Copyright notices (#632) Jan 23, 2020
OTIO_CLA_Corporate.pdf Public beta (#140) Jul 28, 2017
OTIO_CLA_Individual.pdf Public beta (#140) Jul 28, 2017 Updating Copyright notices (#632) Jan 23, 2020
readthedocs-conda.yml Add cmake/C++ support to ReadTheDocs documentation generation. (#547) Aug 7, 2019
setup.cfg Example RV OTIO reading application plugin (#565) Sep 24, 2019 Version bump to beta 13 Mar 17, 2020



Supported VFX Platform Versions Supported Versions Build Status codecov docs

Main web site:



Discussion group:

Slack channel: To join, create an account here first:


OpenTimelineIO is currently in Public Beta. That means that it may be missing some essential features and there are large changes planned. During this phase we actively encourage you to provide feedback, requests, comments, and/or contributions.


OpenTimelineIO is an interchange format and API for editorial cut information. OTIO is not a container format for media, rather it contains information about the order and length of cuts and references to external media.

OTIO includes both a file format and an API for manipulating that format. It also includes a plugin architecture for writing adapters to convert from/to existing editorial timeline formats. It also implements a dependency- less library for dealing strictly with time, opentime.

You can provide adapters for your video editing tool or pipeline as needed. Each adapter allows for import/export between that proprietary tool and the OpenTimelineIO format.


Documentation, including quick start, architecture, use cases, API docs, and much more, is available on ReadTheDocs


OpenTimelineIO supports, or plans to support, conversion adapters for many existing file formats, such as Final Cut Pro XML, AAF, CMX 3600 EDL, etc.


Other Plugins

OTIO also supports several other kinds of plugins, for more information see:

  • Media Linkers - Generate media references to local media according to your local conventions.
  • HookScripts - Scripts that can run at various points during OTIO execution (ie before the media linker)
  • SchemaDefs - Define OTIO schemas.

Installing / Quick-Start

The python-wrapped version of OpenTimelineIO is publicly available via pypy. You can install OpenTimelineIO via:

pip install opentimelineio

For detailed installation instructions and notes on how to run the included viewer program, see:

Example Usage

import opentimelineio as otio

timeline = otio.adapters.read_from_file("foo.aaf")
for clip in timeline.each_clip():
  print, clip.duration()

There are more code examples here:

Also, looking through the unit tests is a great way to see what OTIO can do:

OTIO includes a viewer program as well (see the quickstart section for instructions on installing it):

OTIO View Screenshot


If you want to contribute to the project, please see:

You can get the latest development version via:

git clone OpenTimelineIO

You can install development dependencies with pip install .[dev]

You can also install the PySide2 dependency with pip install .[view]

Currently the code base is written against python 2.7, python 3.6 and 3.7, in keeping with the pep8 style. We ask that before you submit a pull request, you:

  • run make test -- to ensure that none of the unit tests were broken
  • run make lint -- to conform to pep8
  • run make coverage -- to detect code which isn't covered



OpenTimelineIO is open source software. Please see LICENSE.txt for details.

Nothing in the license file or this project grants any right to use Pixar or any other contributor’s trade names, trademarks, service marks, or product names.


For more information, please visit or or join our discussion forum:

You can’t perform that action at this time.