Timeline Package (timeline)
The timeline package provides the declarative Abstract Syntax Tree (AST) representing video compositions.
Timeline
go
import "github.com/farshidrezaei/vidonex/timeline"
tl := timeline.New(
timeline.WithCanvas(types.Size{Width: 1920, Height: 1080}),
timeline.WithFPS(types.FPS60),
timeline.WithBackgroundColor(types.Black),
)Methods
tl.AddTrack(tracks ...*Track) *Timeline: Appends tracks to the timeline.tl.Tracks() iter.Seq[*Track]: Modern Go iterator over all registered tracks.tl.Validate() error: Verifies timeline consistency, media duration constraints, and stream alignment.
Tracks
go
track := timeline.NewTrack("main_video", timeline.TrackKindVideo).
SetZIndex(0)Track Kinds
TrackKindVideo: Primary background or normalized video stream.TrackKindOverlay: Picture-in-picture, alpha graphics, or animated layers.TrackKindAudio: Audio streams, music, or dialog.TrackKindSubtitle: Burned-in caption layers.TrackKindWaveform: Synthesized audio waveform visualizations.
Clips
go
clip := timeline.NewClip("clip_id", "path/to/media.mp4", 0, 10*time.Second).
WithTrim(2*time.Second, 12*time.Second).
WithScale(0.5).
WithPosition(types.Point{X: 100, Y: 100}).
WithOpacity(0.9).
WithVolume(0.8)Fluent Chaining Methods
WithTrim(start, end time.Duration) *Clip: Sets source media in/out points.WithPosition(point types.Point) *Clip: Coordinates on canvas.WithScale(factor float64) *Clip: Scale multiplier.WithOpacity(alpha float64) *Clip: Transparency0.0(invisible) to1.0(solid).WithVolume(level float64) *Clip: Audio volume factor.
