tellur-plugin 0.2.1

Plugin ABI for loading tellur timelines as dynamic libraries
Documentation

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.

Comparison with Similar Tools

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.

Getting Started

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-video

You can specify the display name of the timeline with --title (defaults to the directory name if omitted).

Live Preview

tellur live provides a browser preview with hot-rebuilding of the project.

$ tellur live --project path/to/your-video --gpu

Crate Structure

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

Requirements

  • ffmpeg: Required for encoding.
  • fontconfig (Linux only): Required for font detection.

Documentation

For AI coding agents, an authoring skill captures the idiomatic "Tellur style" on top of the tutorials.

A getting-started tutorial is under preparation.

License

MIT