Releases

24 releases tracking the evolution of OpenTimelineIO

Beta 18.1 - Python Wheel Fixes

Pre-release
v0.18.1
November 9, 2025
reinecke

This release fixes an issue with python wheels on linux.

What's Changed

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.18.0...v0.18.1

Contributors (1)

Beta 18 - November 2025

Pre-release
v0.18.0
November 6, 2025
reinecke

Summary

This release includes a large number of fixes as well as schema improvements.

Big Changes

  • Add enabled flag to Effect schema
  • Drop Imath 2 support
  • Remove vfx platform 2020 support from README.md, add 2024 and 2025
  • Added a Color primitive structure for assigning colors to elements (this is not meant to represent pixel colors)
  • Per-Track and Per-Clip Color
  • Added --remove-effects feature to otiotool
  • Remove OTIOView from the core library (The old python library is now stored here - though we encourage people to use Raven instead)
  • Add support for C++ symbol visibility
  • Document C++ API with Doxygen markup

What's Changed

New Contributors

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.17.0...v0.18.0

Beta 17 - June 2024

Pre-release
v0.17.0
June 24, 2024
reinecke

Summary

This release is focussed on moving adapters from the OTIO core codebase and the contrib area into independently versioned and installable PyPI packages. (1386)

If you rely on these adapters, please use the OpenTimelineIO-Plugins PyPI package to ensure you continue to receive them after this release.

The OpenTimelineIO native file format adapters will still be present in the opentimelineio python package. These adapters are:

  • otio_json
  • otiod
  • otioz

To get the full set of OTIO adapters, use the OpenTimelineIO-Plugins python package. In addition to the OpenTimelineIO native adapters, you'll also get:

  • AAF
  • ale
  • burnins
  • cmx_3600
  • fcp_xml
  • fcpx_xml
  • hls_playlist
  • maya_sequencer
  • svg
  • xges

The following are not included in the OTIO-maintained top-level packages:

  • kdenlive - Now hosted and supported under the KDE repository
  • rv_session - This adapter was made obsolete by first-party support of OpenTimelineIO in Shotgrid RV and OpenRV

This effort took a lot of help from the community and in particular the following contributors:

Big Change/Breaking Change

Other Changes

New Contributors

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.16.0...v0.17.0

Beta 16 - April 2024

Pre-release
v0.16.0
April 4, 2024
reinecke

Summary

This release moves from the third party any and optional to C++17 std::any and std::optional (by @darbyjohnston) as well as a collection of enhancements in how the python bindings handle type conversion with C++ (by @JeanChristopheMorinPerso) and the addition of comment to the Marker schema (by @nickblt).

This release also includes an #1654 (by @ggarra13) in C++. These are a new set of APIs intended to implement some common editing commands (insert, overwrite, roll, etc.) backed by the OpenTimelineIO data model. These APIs are meant to provide an opportunity to try the concepts and form a base to iterate on, however there may be breaking changes as they evolve.

Important Note About Adapters

This will be the last release to include the full set of adapters. In the next release, most of the adapters 1386 as optional plugins.

tl;dr - if you rely on the adapters, please use the OpenTimelineIO-Plugins PyPI package to ensure you continue to receive them after this release.

The OpenTimelineIO native file format adapters will still be present in the opentimelineio python package. These adapters are:

  • otio_json
  • otiod
  • otioz

To get the full set of OTIO adapters, use the OpenTimelineIO-Plugins python package. In addition to the OpenTimelineIO native adapters, you'll also get:

  • AAF
  • ale
  • burnins
  • cmx_3600
  • fcp_xml
  • fcpx_xml
  • hls_playlist
  • maya_sequencer
  • svg
  • xges

The following are not included in the OTIO-maintained top-level packages:

  • kdenlive - Now hosted and supported under the KDE repository
  • rv_session - This adapter was made obsolete by first-party support of OpenTimelineIO in Shotgrid RV and OpenRV

To experiment with what this looks at, check out the 0.17.0 Pre-Release - packages are provided on PyPI to try out.

Big Changes

Breaking Changes

Other Changes

New Contributors

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.15...v0.16.0

Beta 17 Pre-Release

Pre-release
v0.17.0.dev1
October 24, 2023
reinecke

Summary

This is a preview release for extracting the "batteries included" file format adapters and moving them to their own repositories and python packages. If you still require the adapters, you should use the opentimelineio-plugins python package which will have a version correlating to each OpenTimelineIO core release.

The release is a Developmental release to give users a chance to try out how the new opentimelineio and opentimelineio-plugins package setups work in their environments. Because this release is an early cut, there are still 1386 before the final release. There are also additional 0.16.0 changes that will be integrated with this release when it is finalized, so please treat it very much as a work-in-progress.

Please provide feedback about your experience in the GitHub issue for adapter break-out - 1386.

How To Install

By default pip won't pick up developmental releases. To try this release, use one of the following:

  • Setting opentimelineio==0.17.0.dev1 as a dependency
  • python -m pip install opentimelineio==0.17.0.dev1
  • python -m pip install --pre opentimelineio

To opt-in to the "batteries-included" package, use any of these variants with the opentimelineio-plugins package.

Important Note About Adapters

Since we've removed the adapters from OpenTimelineIO core, only the OpenTimelineIO native file format adapters are present in the opentimelineio python package. These adapters are:

  • otio_json
  • otiod
  • otioz

To get the full set of OTIO adapters, use the OpenTimelineIO-Plugins python package. In addition to the OpenTimelineIO native adapters, you'll also get:

  • AAF
  • ale
  • burnins
  • cmx_3600
  • fcp_xml
  • fcpx_xml
  • hls_playlist
  • maya_sequencer
  • svg
  • xges

The following are not included in the OTIO-maintained top-level packages:

  • kdenlive - Now hosted and supported under the KDE repository
  • rv_session - This adapter was made obsolete by first-party support of OpenTimelineIO in Shotgrid RV and OpenRV

What's Changed

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.15...v0.17.0.dev1

Beta 15 - September 2022

Pre-release
v0.15
September 26, 2022
ssteinbach

Summary

This release introduces Media-multi references (by @rogernelson), spatial coordinates parameters (also by @rogernelson), otiotool command line utility, a schema downgrading system (for writing OTIO files that are compatible with older versions of OTIO), as well as a number of other smaller bug fixes and enhancements across the core and adapters. This is the last version of OTIO that will support python 2.7.

Thank you to the many community members who contributed to this release!

Important Note About OTIO File Backwards Compatibility

This version of OTIO introduces a new version of the Clip schema, Clip.2 (with multiple media reference support). If you need to write out OTIO files that are compatible with older versions of the OTIO library, then you can use the new downgrade feature to save out OTIO files with Clip.1 schema.

Example using otioconvert on the commandline:

Bash
❯ otioconvert -i tests/sample_data/nested_example.otio -o /var/tmp/v14_compat.otio -A target_schema_versions="{'Clip':1}" && grep "OTIO_SCHEMA.*Clip" /var/tmp/v14_compat.otio 26: "OTIO_SCHEMA": "Clip.1", 75: "OTIO_SCHEMA": "Clip.1", 105: "OTIO_SCHEMA": "Clip.1", 162: "OTIO_SCHEMA": "Clip.1", 192: "OTIO_SCHEMA": "Clip.1", 249: "OTIO_SCHEMA": "Clip.1", 280: "OTIO_SCHEMA": "Clip.1",

C++:

Plaintext
#include <iostream> #include "opentimelineio/timeline.h" namespace otio = opentimelineio::OPENTIMELINEIO_VERSION; void main() { otio::ErrorStatus err; otio::SerializableObject::Retainer<otio::Timeline> timeline( dynamic_cast<otio::Timeline*>( otio::Timeline::from_json_file( "tests/sample_data/nested_example.otio", &err ) ) ); otio::schema_version_map downgrade_manifest = { {"Clip", 1}, }; timeline->to_json_file("/var/tmp/v14_compat.otio", &err, &downgrade_manifest); }

python:

Python
import opentimelineio as otio tl = otio.adapters.read_from_file("tests/sample_data/nested_example.otio") otio.adapters.write_to_file( tl, "/var/tmp/v14_compat.otio", target_schema_versions={"Clip": 1} )

Big Changes

  • The OpenTimelineIO project was moved over to the ASWF organization, and a number of changes were made as part of the ASWF graduation process in:
  • AAF Adapter:
    • AAF Adapter: support for reading markers by @timlehr in #1019
    • AAF adapter: added support for keyframed properties by @timlehr in #1151
  • Merge spatial_coordinates to main by @rogernelson in #1219
  • Media Multi-Reference Feature by @rogernelson in #1241
  • Schema Downgrading System by @ssteinbach in #1387
  • otiotool command line utility by @jminor in #1375

Breaking Changes

  • Fixes 1188 BREAKING CHANGE: change "effect" argument to Gap constructor to "effects" by @visajshah in #1292
  • Clip.2 schema as noted above

Other Changes

Dependency Version Bumps

New Contributors

Full Changelog: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.14...v0.15

Beta 14.1 Patch - November 2021

Pre-release
v0.14.1
December 10, 2021
reinecke

Summary

This release fixes an issue where installation from the sdist (source) package on PyPI would fail. This mostly impacted users with a platform for which we don't provide a prebuilt wheel.

Changes

Beta 14 - October 2021

Pre-release
v0.14
October 27, 2021
ssteinbach

Summary

This release has a number of features, including many backend features that upgrade the CI, build, and release process. Big thanks especially to @KarthikRIyer, @darbyjohnston and @JeanChristopheMorinPerso for their contributions in this and other areas.

Big Things

Other Changes

New Contributors

Full Changelog: https://github.com/PixarAnimationStudios/OpenTimelineIO/compare/v0.13...v0.14

Beta 13 - August 2020

Pre-release
v0.13
August 24, 2020
ssteinbach

This release introduces the ImageSequenceReference schema to OTIO. It adds support for media references that point at sets of files on disk, for example, the rendered EXR frames for a shot. This work was contributed by @apetrynet and @reinecke. It includes RV adapter support.

Additionally, we're starting a restructure of some of the core math libraries built around a more consistent mathematical framework. The first of these changes is shifting to predicates based on Allen's Interval Algebra [https://en.wikipedia.org/wiki/Allen%27s_interval_algebra] .

Big things:

- ImageSequenceReference (@apetrynet and @reinecke) main: #602 #722 w/ #783 #751
- Allen Interval Algebra predicates (@KarthikRIyer) #697
- AAF Reader metadata support #739
- Post adapter write hook added (@apetrynet) #730
- RV native plugin (so that you can read OTIO files from inside RV rather than convert via an adapter to .rvsession files) @avrata and @apetrynet #637

Small things:

- Reverse and dissolve fixes, Wipe transition support was added to the CMX EDL adapter #763 #757 #687
- Fixing up some bugs and algorithms in `rationalTime.cpp` #755 #721 #692 (@reinecke and @KarthikRIyer)
- Tox changed and our setup.cfg was altered to conform with the new standard
- otioview enhancement: double click to see full track name (@KarthikRIyer) #690
- conform.py example now prints support file suffixes (@thebigsasha) #676
- FCP7 adapter bug fixes #674
- xges adapter markers and effects support  (@hwilkes-igalia) #609
- Fix bugs in the kdenlive adapter (@vpinon) #714
- bumped pin of PyAAF2 version to 1.4.0 #738
- bug fixes in Markers #740 and #592 (@elabrosseRodeofx)

Project related things:

- added issue templates to the github repo #768
- cleaned up developer quickstart documentation #717
- documentation was broken on read the docs, this was fixed #715

Point release to fix windows builds (Beta 12.1)

Pre-release
v0.12.1
March 27, 2020
ssteinbach

Includes PR 669, which fixes issues in the cmake build system reported on windows machines. As always, please let us know if you see any further issues and alert us! Thanks!

Beta 12 - March 2020

Pre-release
v0.12
March 17, 2020
ssteinbach

This is the first release with the C++ core. Please test the new build system and make sure it works for your needs. If you run into issues, pin to 0.11.0 (the last pure python release) and let us know so that we can address them.

The adapters remain in python, but the core library and algorithms are implemented in C++. For more information you can see this pr: #540

Big Changes:

  • C++ Core: the core of opentimelineio is now pybind11-wrapped C++. (see above)
  • otiopluginfo command was added for printing information about plugins visible to otio: #586
  • Kdenlive adapter included in contrib (thanks @vpinon) #618
  • Also includes preliminary swift bindings

Small Changes:

  • Tweaks to the repo in anticipation of the move to being hosted by the Academy Software Foundation
  • hook function arguments are passable to all commandline scripts (@mikekoetter) #651
  • Documention for the C++ core, debugging and building
  • local manifests are loaded so that they override the internal manifests for plugins (@JoshBurnell) #591
  • Lots of upgrades for the AAF adapter (@JoshBurnell)
  • SchemaDefs now have a repr method #566
  • CMX EDL Adapter supports multiple locaters per clip now (@elabrosseRodeofx) #664

Lots of other small fixes and changes. Thank you to all of the community contributors!

Beta 11 - July 2019

Pre-release
v0.11
July 22, 2019
ssteinbach

This release is a final checkpoint before we land the C++ branch (cxx) into the master branch. We found there were a number of other small changes that needed to be made before the CXX and Master branches were ready to be merged, so we needed to do one more release before we did that.

Big Changes:

  • The CXX branch is now up to date with master and will be landed shortly after we make this release. (528)
  • In keeping with the VFX platform, we've dropped support for python 3.5 and added support for python 3.7 in our unit test and CI system. (526)

Small Changes:

Big thanks go to @andrewmoore-nz and @thecargocultnz for all the very detailed bug reports and repro cases, they are very helpful for improving OTIO robustness!

Beta 10 - April 2019

Pre-release
v0.10
April 23, 2019
ssteinbach

OpenTimelineIO Release v0.10

We have a port to C++ that you can preview on the cxx branch which we will soon land into master. There are also some schema changes we'd like to make, which we'll be working on and presenting to the community after we land the C++ port. If you'd like to read about how that will work: https://opentimelineio.readthedocs.io/en/latest/tutorials/wrapping-otio.html

Breaking Change:

  • In anticipation of the C++ port (see the cxx branch: https://github.com/PixarAnimationStudios/OpenTimelineIO/tree/cxx) a number of changes were made to make the python API behave like the C++ one
    • 372 types in Opentime are now immutable
  • This led to other enhancements that shouldn't be as noticeable to developers:
    • 477 Timeline.global_start_time had a default value of 0, 24 and was not being serialized. Now it defaults to None and is correctly serializead/deserialized
    • 377 JSON serializer adapter arguments tweaked
    • 364 Using weakref to point at parents
    • 400 the __copy__ method has been removed

Big Changes:

New adapters:

Small Changes:

  • arguments for the commandline tools are now more consistent and richer
    • media linker arguments are now passed in
  • 434, 392 upgrades for the EDL adapter (@apetrynet, @mikekoetter)
  • 437 there was a slice membership bug that got fixed
  • 426, 363 For audio-only tracks, the rv adapter will insert a blank movieproc so only sound is loaded from a source (@avrata, @apetrynet)
  • better unicode string support
  • 462 ALE adapter ugprades (@mikekoetter)
  • 403 Fix a bug in the hook/manifest system (@timlehr)

And more! Thanks to everyone for this big release!

Beta 9 - November 2018

Pre-release
v0.9
November 6, 2018
ssteinbach

OpenTimelineIO Release v0.9

Big Changes:

  • 309 FCP X XML adapter (thanks @eric-with-a-c)
  • New plugins:
    • 351 HookScripts: let you run code in between steps in the OTIO execution flow
    • 342 SchemaDefs: add your own proprietary schemas to OTIO (for example, for a custom metadata class specific to your studio) (@peachey)
  • 342 UnknownSchema: If OTIO hits a schema it doesn't recognize, it doesn't trigger a parse error, instead a blind object is constructed and carried along. (@peachey)
  • 312 Documentation for OTIO now lives on readthedocs: https://opentimelineio.readthedocs.io/en/latest/index.html (big thanks to @boredstiff)
  • Optimizations:
    • 357 Tracks now maintain a set to improve 'contains' performance, resulting in (in some cases) 50x speedup for constructing tracks with lots of clips (thanks @rogergodspeed)
    • 358 Added range_of_all_children to return a dictionary of all the ranges of children of a track in the space of the parent (equivalent to range_in_parent). This sped up the flatten algorithm considerably.

Small Changes:

  • 335, 325, 301 Improvements to the AAF reader (including support for handling muted clips)
  • 299 Now commandline tools are organized into a 'console' module so that pip install correctly installs them
  • 355 otioview, otioconvert and otiocat grew a commandline argument to disable the medialinker -m none
  • 291 Builds now also include Python 3.6, to keep up with the VFX platform. (@boredstiff)
  • 359 Ensure that constructors copy values for things that shouldn't be referenced.

otioview:

  • 302 otioview now has a number of keyboard shortcuts that make it easier to navigate (@bonpix)
  • 321 Dark mode for otioview (@boredstiff)

As usual, other small fixes and improvements.

Point release to address #313

Pre-release
v0.8.1
September 17, 2018
ssteinbach

Addresses 313, making a point release with the bug fixes and pushing this to pypi. Includes:

  • Fix location of console scripts so OpenTimelineIO commandline scripts work properly when installed from PyPI.
  • Add a guard for pkg_resources missing

Beta 8 - July 2018

Pre-release
v0.8
July 24, 2018
jminor

OpenTimelineIO Release v0.8

This feature includes a number of AAF and distribution related upgrades.

Big Features:

  • 260: AAF adapter can read speed effects (+ a bunch of small bug fixes and enhancements)

  • 239: OTIO is now in PyPI. pip install opentimelineio from a shell to get the library! (thanks to @swallitsch)

  • 222: SerializableObjects are now considered reference types, which addresses a number of subtle bugs having to do with ‘instancing’ vs ‘copying’

  • 237: You can make setuptools plugins to register adapters into OTIO now (thanks to @reinecke)

  • 258: Drop frame timecode support in opentime timecode functions (thanks to @apetrynet)

Small Features:

  • 285: __version__ field in the opentimelineio package import opentimelineio as otio; otio.__version__

  • 286: Convienence constructor for creating gaps of a duration: otio.schema.Gap(duration=otio.opentime.TimeRange(500, 24))

  • 270: better support for installing OTIO on Windows

  • 274: Code coverage badge on github page (thanks to @boredstiff )

  • 247: You can pass adapter arguments into otioview

  • 160: PySide 2.0 support for otioview (thanks to @boredstiff )

  • Lots of other small fixes and upgrades. Non-Pixar folks who contributed to this release include:

Thanks to members of the community who chimed in on issues.

Beta 7.1 - Apr 2018

Pre-release
v0.7.1
April 13, 2018
jminor

This is a bug-fix minor update to Beta 7, including support for releasing via PyPI.

Beta 7 - Feb 2018

Pre-release
v0.7
February 22, 2018
jminor

New Features:

  • Added AAF adapter (read only for now)
  • Added support for GeneratorReferences (solid color, etc.)
  • Added Code of Conduct
  • Added flatten function that collapses multiple tracks into one
  • Added support for writing dissolves to the EDL adapter (@mikemahony)
  • Added support for different flavors of EDL (Nucoda, Avid) to EDL adapter (@lsavidge)
  • Contrib adapters are installed by default

Non-backwards compatible API changes:

  • Renamed media_reference.External to schema.ExternalReference
  • Moved media reference classes into schema

API Changes:

  • Added functions for filtering OTIO hierarchies
  • Added convenience methods for getting handles of clips with adjacent transitions
  • Added convenience methods for getting video/audio tracks from a timeline
  • Adapter read/write to/from string functions default to otio_json

Additional:

Beta 6 - Nov 2017

Pre-release
v0.6
November 17, 2017
jminor

Big features:

  • Sequence renamed to Track
  • CDL support in CMX EDL adapter
  • Added otiostat validation utility
  • Added Avid Log Exchange (ALE) adapter
  • Text burn-in adapter via ffmpeg (thanks @repsac)

Small features:

  • Adapters can take arguments
  • Improved nested track support in otioview
  • Improved API for dealing with parent/child time ranges.

Contributors (1)

Beta 5 - July 2017

Pre-release
v0.5
July 28, 2017
jminor

This is OpenTimelineIO's first public beta release.

Big features:

  • Updated license to make the project public.
  • Transition support in the FCP XML adapter and OTIO View (@bashesenaxis)
  • Multiple timeline support in FCP XML and OTIO View (@bashesenaxis)
  • Media Linker plugin feature

Small features:

  • Filler renamed to Gap
  • Marker colors
  • Travis CI setup (@mikemahony)
  • Clarified available_range, duration, and inclusive/exclusive time ranges
  • Bug fixes in Transition support in EDL and RV adapters
  • Lots more bug fixes (@mikemahony, @bashesenaxis, @avrata)

Alpha 4 - April 2017

Pre-release
v0.4
April 27, 2017
jminor

Big features:

  • Transition support (reading from EDLs, writing to RV)
  • RV session file adapter (writing only) (with help from @tweakjon)
  • Maya Sequencer adapter (from @bashesenaxis)
  • HLS adapter (from @reinecke)
  • Support for saving a collection of OTIO objects in one file (e.g. a bin of timelines & clips)

Smaller stuff:

  • API clarification for inclusive/exclusive end_time.
  • Conceptual architecture documentation.
  • Fixed non-24 fps timecode. (from @reinecke)
  • More robust EDL parsing based on production data from real studios. (from @adaro and others)

Alpha 3 - January 2017

Pre-release
v0.3
January 20, 2017
ssteinbach

This release includes:

  • Final Cut Pro 7 XML adapter (from @bashesenaxis )
  • Adobe Premiere support via the FCP 7 XML adapter (from @bashesenaxis )
  • Cross-platform PySide viewer application and widget for visually inspecting OTIO compatible files. (from @bashesenaxis )
  • Marker support in the CMX EDL reader
  • New code documentation system
  • Coverage make target
  • Optimized the unit test run time

Contributors (1)

Alpha2

Pre-release
v0.2
November 10, 2016
ssteinbach

Includes:

  • Support for versioning schemas ( 10 ). As things change, developers can define upgrade functions so that future versions of OTIO can gracefully upgrade older versions of the schema.
  • Nesting and functionality to fetch the range of nested items/compositions ( 16 13 )
  • Removing the unused "transform" property ( 12 )
  • Python 3 support ( 19 24 20, @reinecke )
  • Conversion to/from seconds for RationalTime ( 17, @reinecke )
  • Cleanup on the setup.py ( 18 @reinecke )

Thank you!

Contributors (1)

Alpha1

Pre-release
v0.1
October 25, 2016
ssteinbach

First public push of OTIO to early collaborators.