{"id":13736503,"url":"https://github.com/AcademySoftwareFoundation/OpenTimelineIO","last_synced_at":"2025-05-08T12:33:02.457Z","repository":{"id":36984739,"uuid":"66404312","full_name":"AcademySoftwareFoundation/OpenTimelineIO","owner":"AcademySoftwareFoundation","description":"Open Source API and interchange format for editorial timeline information.","archived":false,"fork":false,"pushed_at":"2024-10-14T00:34:43.000Z","size":24663,"stargazers_count":1460,"open_issues_count":222,"forks_count":289,"subscribers_count":107,"default_branch":"main","last_synced_at":"2024-10-29T15:37:10.281Z","etag":null,"topics":["animation","cut","editing","editorial","film","film-editing","interchange","interchange-format","nle","otio","timeline","vfx","video-editing"],"latest_commit_sha":null,"homepage":"http://opentimeline.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AcademySoftwareFoundation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-23T21:22:18.000Z","updated_at":"2024-10-28T09:37:58.000Z","dependencies_parsed_at":"2024-03-14T21:31:26.593Z","dependency_job_id":"8d4fb861-3f1f-43ea-938d-9ceab5122753","html_url":"https://github.com/AcademySoftwareFoundation/OpenTimelineIO","commit_stats":{"total_commits":752,"total_committers":88,"mean_commits":8.545454545454545,"dds":0.8151595744680851,"last_synced_commit":"ee3e3175b00b9a49cb5130c01367af9c41d5bbb6"},"previous_names":["pixaranimationstudios/opentimelineio"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcademySoftwareFoundation%2FOpenTimelineIO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcademySoftwareFoundation%2FOpenTimelineIO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcademySoftwareFoundation%2FOpenTimelineIO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcademySoftwareFoundation%2FOpenTimelineIO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AcademySoftwareFoundation","download_url":"https://codeload.github.com/AcademySoftwareFoundation/OpenTimelineIO/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224732129,"owners_count":17360416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animation","cut","editing","editorial","film","film-editing","interchange","interchange-format","nle","otio","timeline","vfx","video-editing"],"created_at":"2024-08-03T03:01:23.008Z","updated_at":"2025-05-08T12:33:02.428Z","avatar_url":"https://github.com/AcademySoftwareFoundation.png","language":"Python","funding_links":[],"categories":["Tools","Python","C++","Tools, Pipeline \u0026 Utilities"],"sub_categories":["Objective-C Tools, Libraries, and Frameworks","Pipeline Standards"],"readme":"OpenTimelineIO\n=======\n[![OpenTimelineIO](docs/_static/OpenTimelineIO@3xDark.png)](http://opentimeline.io)\n==============\n\n[![Supported VFX Platform Versions](https://img.shields.io/badge/vfx%20platform-2020--2023-lightgrey.svg)](http://www.vfxplatform.com/)\n![Supported Versions](https://img.shields.io/badge/python-3.7%2C%203.8%2C%203.9%2C%203.10%2C%203.11-blue)\n[![Build Status](https://github.com/AcademySoftwareFoundation/OpenTimelineIO/actions/workflows/python-package.yml/badge.svg)](https://github.com/AcademySoftwareFoundation/OpenTimelineIO/actions/workflows/python-package.yml)\n[![codecov](https://codecov.io/gh/AcademySoftwareFoundation/OpenTimelineIO/branch/main/graph/badge.svg)](https://codecov.io/gh/AcademySoftwareFoundation/OpenTimelineIO)\n[![docs](https://readthedocs.org/projects/opentimelineio/badge/?version=latest)](https://opentimelineio.readthedocs.io/en/latest/index.html)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2288/badge)](https://bestpractices.coreinfrastructure.org/projects/2288)\n\nLinks\n-----\n\n* Main web site: http://opentimeline.io/\n* Documentation: https://opentimelineio.readthedocs.io/\n* Wiki (more documentation): https://github.com/AcademySoftwareFoundation/OpenTimelineIO/wiki\n* GitHub: https://github.com/AcademySoftwareFoundation/OpenTimelineIO\n* [Discussion group](https://lists.aswf.io/g/otio-discussion)\n* [Slack channel](https://academysoftwarefdn.slack.com/messages/CMQ9J4BQC)\n  * To join, create an account here first: https://slack.aswf.io/\n* [Presentations](https://github.com/AcademySoftwareFoundation/OpenTimelineIO/wiki/Presentations)\n\nPUBLIC BETA NOTICE\n------------------\n\nOpenTimelineIO is currently in Public Beta. That means that it may be missing\nsome essential features and there are large changes planned. During this phase\nwe actively encourage you to provide feedback, requests, comments, and/or\ncontributions.\n\nOverview\n--------\n\nOpenTimelineIO is an interchange format and API for editorial cut information.\nOTIO contains information about the order and length of cuts and\n references to external media. It is not however, a container format for media.\n\nFor integration with applications, the core OTIO library is implemented in C++\nand provides an in-memory data model, as well as library functions for\ninterpreting, manipulating, and serializing that data model. Within the core is\na dependency-less library for dealing strictly with time, `opentime`.\n\nThe project also supports an official python binding, which is intended to be\nan idiomatic and ergonomic binding for python developers.  The python binding\nincludes a plugin system which supports a number of different types of plugins,\nmost notably adapters, which can be used to read and write legacy formats into\nthe OTIO data model.\n\nDocumentation\n--------------\nDocumentation, including quick start, architecture, use cases, API docs, and much more, is available on [ReadTheDocs](https://opentimelineio.readthedocs.io/)\n\nSupported VFX Platforms\n-----------------\nThe current release supports:\n- VFX platform 2023, 2022, 2021, 2020\n- Python 3.7 - 3.10\n\nFor more information on our vfxplatform support policy: [Contribution Guidelines Documentation Page](https://opentimelineio.readthedocs.io/en/latest/tutorials/contributing.html)\nFor more information on the vfxplatform: [VFX Platform Homepage](https://vfxplatform.com)\n\nAdapter Plugins\n---------------\n\nTo provide interoperability with other file formats or applications lacking a\nnative integration, the opentimelineio community has built a number of python\nadapter plugins. This includes Final Cut Pro XML, AAF, CMX 3600 EDL, and more.\n\n**Note: for releases after v0.16, the [OpenTimelineIO PyPI package](https://pypi.org/project/OpenTimelineIO/) will only include the core libraries and file formats. Users that need the full set of adapter plugins should use the [OpenTimelineIO-Plugins PyPI Package](https://pypi.org/project/OpenTimelineIO-Plugins/). Each OpenTimelineIO release will have a matching OpenTimelineIO-Plugins release.**\n\nFor more information: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/issues/1386\n\nFor more information about this, including supported formats, see: https://opentimelineio.readthedocs.io/en/latest/tutorials/adapters.html\n\nAll adapters except the native `.otio`, `.otioz` and `.otiod` have been relocated to separate repositories under the OpenTimelineIO organization located here: https://github.com/OpenTimelineIO\nThe OTIO python bindings also support several other kinds of plugins, for more information see:\n\n* [Media Linkers](https://opentimelineio.readthedocs.io/en/latest/tutorials/write-a-media-linker.html) - Generate media references to local media according to your local conventions.\n* [HookScripts](https://opentimelineio.readthedocs.io/en/latest/tutorials/write-a-hookscript.html) - Scripts that can run at various points during OTIO execution (_ie_ before the media linker)\n* [SchemaDefs](https://opentimelineio.readthedocs.io/en/latest/tutorials/write-a-schemadef.html) - Define OTIO schemas.\n\nInstalling / Quick-Start\n------------------------\n\nThe Python-wrapped version of OpenTimelineIO is publicly available [via PyPI](https://pypi.org/project/OpenTimelineIO/).  You can install OpenTimelineIO via:\n\n`python -m pip install opentimelineio`\n\nFor detailed installation instructions and notes on how to run the included viewer program, see: https://opentimelineio.readthedocs.io/en/latest/tutorials/quickstart.html\n\n\nExample Usage\n-------------\n\nC++:\n\n```c++\n#include \u003ciostream\u003e\n\n#include \"opentimelineio/timeline.h\"\n\nnamespace otio = opentimelineio::OPENTIMELINEIO_VERSION;\n\nvoid\nmain()\n{\n    otio::SerializableObject::Retainer\u003cotio::Timeline\u003e tl(\n            dynamic_cast\u003cotio::Timeline*\u003e(\n                otio::Timeline::from_json_file(\"taco.otio\")\n        )\n    );\n    for (const auto\u0026 cl : tl-\u003efind_clips())\n    {\n        otio::RationalTime dur = cl-\u003eduration();\n        std::cout \u003c\u003c \"Name: \" \u003c\u003c cl-\u003ename() \u003c\u003c \" [\";\n        std::cout \u003c\u003c dur.value() \u003c\u003c \"/\" \u003c\u003c dur.rate() \u003c\u003c \"]\" \u003c\u003c std::endl;\n    }\n}\n```\n\nPython:\n\n```python\nimport opentimelineio as otio\n\ntimeline = otio.adapters.read_from_file(\"foo.aaf\")\nfor clip in timeline.find_clips():\n  print(clip.name, clip.duration())\n```\n\nThere are more code examples here: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/tree/main/examples\n\nAlso, looking through the unit tests is a great way to see what OTIO can do:\nhttps://github.com/AcademySoftwareFoundation/OpenTimelineIO/tree/main/tests\n\nOTIO includes a viewer program as well (see the quickstart section for instructions on installing it):\n\n![OTIO View Screenshot](docs/_static/otioview.png)\n\nDeveloping\n----------\n\nIf you want to contribute to the project, please see: https://opentimelineio.readthedocs.io/en/latest/tutorials/contributing.html\n\nYou can get the latest development version via:\n\n`git clone git@github.com:AcademySoftwareFoundation/OpenTimelineIO.git --recursive `\n\nYou can install development dependencies with `python -m pip install .[dev]`\n\nYou can also install the PySide2 dependency with `python -m pip install .[view]`\n\nYou may need to escape the `[` depending on your shell, `\\[view\\]` .\n\nCurrently the code base is written against python 3.7, 3.8, 3.9, 3.10 and 3.11,\nin keeping with the pep8 style.  We ask that before developers submit pull\nrequest, they:\n\n- run `make test` -- to ensure that none of the unit tests were broken\n- run `make lint` -- to ensure that coding conventions conform to pep8\n- run `make coverage` -- to detect code which isn't covered\n\nPEP8: https://www.python.org/dev/peps/pep-0008/\n\nFor advanced developers, arguments can be passed to CMake through the pip\ncommandline by using the `CMAKE_ARGS` environment variable.\n\n*nix Example:\n\n`env CMAKE_ARGS=\"-DCMAKE_VAR=VALUE1 -DCMAKE_VAR_2=VALUE2\" pip install .`\n\nAdditionally, to reproduce CI failures regarding the file manifest, run:\n`make manifest` locally to run the python `check-manifest` program.\n\n## C++ Coverage Builds\n\nTo enable C++ code coverage reporting via gcov/lcov for builds, set the\nfollowing environment variables:\n\n- `OTIO_CXX_COVERAGE_BUILD=ON`\n- `OTIO_CXX_BUILD_TMP_DIR=path/to/build/dir`\n\nWhen building/installing through `pip`/`setup.py`, these variables must be set\nbefore running the install command (`python -m pip install .` for example).\n\nLicense\n-------\nOpenTimelineIO is open source software. Please see the [LICENSE.txt](LICENSE.txt) for details.\n\nNothing 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.\n\nContact\n-------\n\nFor more information, please visit http://opentimeline.io/\nor https://github.com/AcademySoftwareFoundation/OpenTimelineIO\nor join our discussion forum: https://lists.aswf.io/g/otio-discussion\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAcademySoftwareFoundation%2FOpenTimelineIO","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAcademySoftwareFoundation%2FOpenTimelineIO","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAcademySoftwareFoundation%2FOpenTimelineIO/lists"}