tlRender
tlRender is an open source library for building playback and review applications for visual effects, film, and animation.
The library can render and playback timelines with multiple video clips, image sequences, audio clips, and transitions. Examples are provided for integrating the library with OpenGL applications.
The library is written in C++ and uses the CMake build system, with Python bindings on PyPI:
pip install tlRender
These screenshots show an example application built with tlRender. The application is comparing two images with a wipe and horizontal layout.
Features:
- Support for timelines, image sequences, movies, and audio files
- A/B comparison with wipe, overlay, and difference modes
- Color management with OpenColorIO
- Multi-track audio with variable speed and reverse playback
- Experimental support for USD files
- Available for Linux, macOS, and Windows
Web Player
An experimental build of the example player runs in the browser, playing movies with the WebCodecs API:
The "url" query plays a movie from any host that allows cross-origin range reads.
Python
The Python bindings are one wheel per platform for CPython 3.12 and later, built on the feather-tk wheel, which pip installs with them, and OpenTimelineIO:
import opentimelineio as otio
import feather_tk as ftk
import tlrender as tl
The wheel has only the FFmpeg codecs that need no patent license; build from source for the rest. OpenTimelineIO does not publish wheels for every platform tlRender does, so on some pip builds it from source, which needs a C++ compiler.
The Python examples show the API in use. The wheel also carries the C++ libraries, headers, and CMake package, so a project with its own bindings can build against the same installation:
cmake -DtlRender_DIR="$(python -c "import tlrender; print(tlrender.get_cmake_dir())")" ...
tlRender's package finds feather-tk's in the feather_tk package beside it.
Building Dependencies
A CMake super build script is provided to build all of the dependencies from source.
Build options go in etc/Config/local.cmake, which is not tracked. For
example, to enable USD (building USD also requires Python 3):
set(TLRENDER_USD ON CACHE BOOL "")
Required dependencies:
Optional dependencies:
Building on Linux
Requirements:
- Git
- CMake 3.31
Debian
Install system packages:
sudo apt-get install build-essential git cmake xorg-dev libglu1-mesa-dev mesa-common-dev mesa-utils libasound2-dev libpulse-dev libva-dev libdrm-dev libwayland-dev wayland-protocols libxkbcommon-dev libegl1-mesa-dev libdecor-0-dev
The Wayland packages are optional; without them SDL is built with X11 only and runs through XWayland on a Wayland desktop.
Rocky 9
Install system packages:
sudo dnf install git libX11-devel libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel mesa-libGL-devel pipewire-devel libva-devel libdrm-devel wayland-devel wayland-protocols-devel libxkbcommon-devel mesa-libEGL-devel libdecor-devel
Rocky 8
Install system packages:
sudo dnf install git libX11-devel libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel mesa-libGL-devel pipewire-devel libva-devel libdrm-devel wayland-devel wayland-protocols-devel libxkbcommon-devel mesa-libEGL-devel
Install newer compiler:
sudo dnf install gcc-toolset-13
Enable newer compiler:
scl enable gcc-toolset-13 bash
NVIDIA hardware decoding loads the driver's CUDA library at run time. On RHEL family systems that is a separate package:
sudo dnf install nvidia-driver-cuda-libs
Build
Clone the repository:
git clone https://github.com/grizzlypeak3d/tlRender.git
Run the super build script:
sh tlRender/sbuild-linux.sh
Try running the tlplay application:
./build-Release/bin/tlplay/tlplay tlRender/etc/SampleData/MultipleClips.otio
Example running gcovr for code coverage:
gcovr -r ../../../../lib --html --object-directory lib --html-details --output gcov.html lib/tlCore lib/tlIO lib/tlTimeline
Building on macOS
Requirements:
- Git
- Xcode
- CMake 3.31
Clone the repository:
git clone https://github.com/grizzlypeak3d/tlRender.git
Run the super build script:
sh tlRender/sbuild-macos.sh
Try running the tlplay application:
./build-Release/bin/tlplay/tlplay tlRender/etc/SampleData/MultipleClips.otio
These aliases are convenient for switching between architectures:
alias arm="env /usr/bin/arch -arm64 /bin/zsh --login"
alias intel="env /usr/bin/arch -x86_64 /bin/zsh --login"
Building on Windows
Requirements:
- Git (https://git-scm.com)
- Visual Studio 2022
- CMake 3.31
- NASM (https://www.nasm.us) for compiling FFmpeg and libjpeg-turbo.
- MSYS2 (https://www.msys2.org) for compiling FFmpeg.
- Strawberry Perl (https://strawberryperl.com/) for compiling network support.
- Python 3.11 for compiling USD.
Open the Visual Studio command console "x64 Native Tools Command Prompt for VS 2022". This can be found in the Start menu, in the "Visual Studio 2022" folder.
Clone the repository:
git clone https://github.com/grizzlypeak3d/tlRender.git
Run the super build script:
tlRender\sbuild-win.bat
Try running the tlplay application:
set PATH=%CD%\install-Release\bin;%PATH%
.\build-Release\bin\tlplay\Release\tlplay tlRender\etc\SampleData\MultipleClips.otio
Metadata
Release files for tlRender 0.21.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tlrender-0.21.1.tar.gz | 44.3 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| tlrender-0.21.1-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| tlrender-0.21.1-cp312-abi3-manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| tlrender-0.21.1-cp312-abi3-manylinux_2_28_aarch64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| tlrender-0.21.1-cp312-abi3-macosx_11_0_arm64.whl | CPython 3.12 | abi3 | macOS 11.0+ ARM64 | Details |
| tlrender-0.21.1-cp312-abi3-macosx_10_15_x86_64.whl | CPython 3.12 | abi3 | macOS 10.15+ x86-64 | Details |
Total release size: 255.8 MB
Release files / tlrender-0.21.1.tar.gz
| Download URL | tlrender-0.21.1.tar.gz |
|---|---|
| Size | 44.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a8e459ea23b32a21621199b583ef9e26aa63ab9beb31093fbff7caa48c4b8713
|
|
BLAKE2b-256 checksum How to use checksums |
245341f1dc017fe82f0c57b2b5b9dc93dbc3527f8b34f800665ef3bcdcb3c13e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / tlrender-0.21.1-cp312-abi3-win_amd64.whl
| Download URL | tlrender-0.21.1-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 35.3 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
59dfe8a15b1983592398b081f61c3afa32944d01403e51cb1165d2116b32def1
|
|
BLAKE2b-256 checksum How to use checksums |
016cc73099aef4e8fe4baccc0cd776087ea90954121bdcb6464e424bf976ee4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / tlrender-0.21.1-cp312-abi3-manylinux_2_28_x86_64.whl
| Download URL | tlrender-0.21.1-cp312-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 48.5 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3d990bbd8b7989e798096d15b77a794ba8f3dca7b91aa06869eaf51e5507d415
|
|
BLAKE2b-256 checksum How to use checksums |
f3a2a858a224d1b88681e9b0b0ed97c46650baad96147b9c89ddd5e748b8e3a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / tlrender-0.21.1-cp312-abi3-manylinux_2_28_aarch64.whl
| Download URL | tlrender-0.21.1-cp312-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 45.9 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
86d6d5eb34cafbdbe5833d44dddda0502ec80dd467cc2982707199d714c17e7e
|
|
BLAKE2b-256 checksum How to use checksums |
8003de8082a2e9ecef82a3bbb40dc059c057cf5513d7b6919249e431f3233771
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / tlrender-0.21.1-cp312-abi3-macosx_11_0_arm64.whl
| Download URL | tlrender-0.21.1-cp312-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 38.0 MB |
| Tags | CPython 3.12 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b8d6f3dbffe694a6be1dfced30a9e46cb8c8a05eadd4a05bf3fcb95b41b0c421
|
|
BLAKE2b-256 checksum How to use checksums |
1df04d64a2fc9a3f19e6eb9633ea827f36cbc207f6d2526dce546797123c2eeb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / tlrender-0.21.1-cp312-abi3-macosx_10_15_x86_64.whl
| Download URL | tlrender-0.21.1-cp312-abi3-macosx_10_15_x86_64.whl |
|---|---|
| Size | 43.9 MB |
| Tags | CPython 3.12 abi3 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
889bb235a2cdb3465a7e0bf32580bc643544e38e2627704f39dab50e05b80489
|
|
BLAKE2b-256 checksum How to use checksums |
1bd08c8b0d6519aa1d5ddc2135e759f241152b72294752ca7fe0e2b2de056c0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency log