A video editing and motion graphics library made with Rust
Tellur is a component-oriented video editing library. It aims to be a general-purpose library capable of handling various video styles.
- Rich expressions like motion graphics
- Variety-show style telops/captions
- Calm tones suitable for explainer videos, etc.
Each element in a video is represented by a combination of components as shown below.
#[component(vector)]
fn Dot(center: Vec2, radius: f32, color: Color) -> impl VectorComponent {
Circle::builder()
.radius(radius)
.fill(Fill {
paint: Paint::Solid(color),
})
.anchored(Anchor::CENTER)
.snap_to(center)
}Components are functional and pure, enabling caching at the subtree level.
Additionally, GPU rendering is implemented for most built-in components, making it extremely fast.
Remotion (React)
- Pros: Since it has its own rasterizer, it is easy to create rich expressions that go beyond the limitations of HTML/CSS.
- Cons: The writing style cannot compete with the conciseness of JSX.
Manim (Python)
- Pros: Rendering is fast, and it provides a full suite of tools for video production regardless of genre, including timelines, layouts, and live previews.
- Cons: Complex mathematical expressions are still immature.
You can create a timeline project from a template using tellur create. This generates a Cargo.toml (a cdylib crate) and sample scenes. If executed within a Cargo workspace, it also automatically handles member registration and tellur dependencies.
$ tellur create my-videoYou can specify the display name of the timeline with --title (defaults to the directory name if omitted).
tellur live provides a browser preview with hot-rebuilding of the project.
$ tellur live --project path/to/your-video --gpu| crate | Role |
|---|---|
tellur |
Facade. Re-exports everything below. tellur CLI (cli feature) |
tellur-core |
Component model, layout, easing, events, text, LaTeX math |
tellur-renderer |
GPU/CPU rasterization and ffmpeg encoding |
tellur-macros |
#[component] and #[derive(Keyable)] |
tellur-live |
Live preview server |
tellur-plugin |
Dynamic library ABI used by live preview |
- ffmpeg: Required for encoding.
- fontconfig (Linux only): Required for font detection.
- Layout system tutorial — the canvas and flow worlds:
Layer,Frame,Flex, anchors, and clipping (日本語) - Time system tutorial —
Phase,Window, events, and the global/local clock axes (日本語)
For AI coding agents, an authoring skill captures the idiomatic "Tellur style" on top of the tutorials.
A getting-started tutorial is under preparation.
MIT