Registry / data / opentimelineio

opentimelineio

JSON →
library0.18.1pypypi✓ verified 90d ago

OpenTimelineIO (OTIO) is an interchange format and Python API for editorial timeline information. It provides a common data model for representing timelines, clips, effects, markers, and transitions, and includes adapters for reading/writing various editorial formats (e.g., AAF, CMX 3600 EDL, Final Cut Pro XML). The current version is 0.18.1 (Beta). Release cadence is approximately two major beta releases per year. Requires Python >3.9.

pip install opentimelineio
INSTALL
IMPORT
SIG · OPENTIMELINEIO
O
opentimelineio
datapythonv0.18.1
Install
2.0s avg
Import
194ms
Disk
21MB
Pass rate
5/ 10
Env Coverage5 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v0.18.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.10–3.910 runs
build_error
glibc
py 3.10–3.910 runs
installs and imports cleanly · install 2.0s · import 0.194s · 23MB
21MB installed
● package 21MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

opentimelineio
✓ import opentimelineio as otio
✗ import OpenTimelineIO
Module name is lowercase; case-sensitive on case-sensitive filesystems.
otio.schema
✓ from opentimelineio import schema
✗ from otio import schema
Use the full package name on import; the alias 'otio' is conventional but not an importable module.
otio.adapters
✓ from opentimelineio import adapters
✗ import adapters
adapter aliases may shadow; always import from opentimelineio.

Creates a simple timeline with one video track and a clip, then outputs as OTIO JSON.

import opentimelineio as otio # Create a timeline timeline = otio.schema.Timeline("example_timeline") track = otio.schema.Track("video_track", kind="Video") timeline.tracks.append(track) # Create a clip from an external reference clip = otio.schema.Clip( name="shot1", media_reference=otio.schema.ExternalReference( target_url="/path/to/file.mov", available_range=otio.opentime.TimeRange( start_time=otio.opentime.RationalTime(0, 24), duration=otio.opentime.RationalTime(48, 24) ) ) ) track.append(clip) # Serialize to JSON (native format) print(otio.adapters.write_to_string(timeline, "otio_json"))
otiocat --version
Debug
Known issues
breakingAdapter extraction: As of v0.17.0, many file format adapters (AAF, EDL, FCP XML, etc.) have been moved to the separate `opentimelineio-plugins` package. They are no longer included in the core `opentimelineio` install. If you need those adapters, install `pip install opentimelineio-plugins`.
fix
Install OpenTimelineIO-Plugins package.
affects: >=0.17.0
deprecatedOTIOView removed: The `OTIOView` graphical viewer utility was removed from the core library in v0.18.0. Use alternative viewers or implement your own with the core API.
fix
Remove any imports of `opentimelineio.viewers` or usage of OTIOView.
affects: >=0.18.0
gotchaCase-sensitive imports: The Python package name is all lowercase `opentimelineio`. Many users mistakenly use `OpenTimelineIO` (mixed case) as the module name, which fails on Linux/macOS.
fix
Use `import opentimelineio` (lowercase) always.
affects: all
gotchaSchema changes: The `Marker` schema gained a `comment` field in v0.16.0. Older code that assumes Marker only has name and marked_range may break when reading files written with newer versions.
fix
Update code to handle the optional `comment` attribute on Marker objects.
affects: >=0.16.0
gotchaEffect 'enabled' flag: The `Effect` schema now includes an `enabled` boolean field (added in v0.18.0). Older code may ignore this field, causing subtle behavior differences when effects are disabled.
fix
Check the `enabled` attribute when iterating over effects; default is True.
affects: >=0.18.0
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'opentimelineio'
Package not installed or installed in a different Python environment.
fix
Run `pip install opentimelineio` in the same environment where your script runs.
ModuleNotFoundError: No module named 'opentimelineio_adapters' or 'otio_adapters'
User tried to import adapters from a separate package after v0.17.0 extraction.
fix
Install `pip install opentimelineio-plugins` and import from `opentimelineio.adapters` (the core package now includes a thin wrapper that finds adapters from plugins).
AttributeError: module 'opentimelineio' has no attribute 'schema'
Incorrect import pattern (e.g., `import opentimelineio` and then `opentimelineio.schema` should work; but if user did `from opentimelineio import *` submodules may not be imported).
fix
Use explicit submodule import: `from opentimelineio import schema` or `import opentimelineio.schema`.
opentimelineio.exceptions.CannotComputeSynchronizationException: ...
Attempting to compute a synchronized time range when the media reference does not have a defined available_range or the range is undefined.
fix
Ensure that the media_reference has an `available_range` set before calling timeline methods that compute synchronization.
Upgrade
Version history
0.18.1latest on PyPI · released Nov 9, 2025
Audit
Dependencies
PyOpenColorIOoptionalRequired for color management functionality.
Agent activity
2 hits · last 30 days
node
2
Resources
opentimelineio — pip install opentimelineio · libregistry