packages/library/odin-ffmpeg-timeline
o

odin-ffmpeg-timeline

v4e4dbe2library

A tiny declarative FFmpeg timeline builder in Odin.

0 stars0 forksUnknownupdated 5 hours ago
Open repo

Odin FFmpeg Timeline

A tiny declarative FFmpeg timeline builder in Odin.

FFmpeg timeline preview

The model is deliberately simple:

Odin timeline data
        ↓
filter_complex.txt
        ↓
real ffmpeg process
        ↓
output.mp4

It does not bind libav* and it does not try to wrap every FFmpeg filter. It builds the parts that are annoying to author by hand and leaves an escape hatch with timeline.raw(...).

Run

Put your audio at song.m4a, then:

odin run .

or:

just run

The example recreates the temporal-incident style:

tl.text_file(&timeline, "texts/tuesday.txt", 52, 74,
    tl.Text_Style{
        x = "(w-text_w)/2",
        y = "185",
        size = 42,
        color = "white",
        alpha = 1,
        line_spacing = 16,
    })

tl.countdown(&timeline, 136, 142, []string{"10", "5", "3", "2", "1"})

API

  • init / destroy
  • audio_reactive_archive — starts the spectrum + waveform visualizer graph
  • text_file — timed text from a file; preferred for arbitrary prose
  • text_literal — timed inline text for simple safe strings
  • countdown — evenly splits a time range across values
  • raw — append any raw FFmpeg filter
  • finish — finalize to [vout]
  • write_filter — write the generated filtergraph
  • render — invoke FFmpeg through core:os.process_exec

Why text files?

FFmpeg drawtext escaping can become unpleasant quickly. textfile= makes the timeline readable and keeps punctuation-heavy copy out of the filtergraph.

Status

The code targets the current Odin core:os.process_exec and core:strings.Builder APIs documented for dev-2026-07.

Package Info
Version
v4e4dbe2
License
Unknown
Author
@skorotkiewicz
Type
library
Forks
0
Created
5 hours ago
Updated
5 hours ago
Health
maintained
has releases
has readme
has license
Activity
last 56 weeks