Initial commit: video effects processing system

Add S-expression based video effects pipeline with modular effect
definitions, constructs, and recipe files.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
gilesb
2026-01-19 12:34:45 +00:00
commit 406cc7c0c7
171 changed files with 13406 additions and 0 deletions

24
recipe-construct.sexp Normal file
View File

@@ -0,0 +1,24 @@
; Test recipe using user-defined construct
(recipe "construct-test"
:version "1.0"
:encoding (:codec "libx264" :crf 22 :preset "fast" :audio-codec "aac" :fps 30)
(analyzer beats :path "../artdag-analyzers/beats/analyzer.py")
(construct beat-alternate :path "constructs/beat-alternate.sexp")
(def video-a (source :path "monday.webm" :description "Video A"))
(def video-b (source :path "new.webm" :description "Video B"))
(def audio (-> (source :path "dizzy.mp3" :description "Audio input")
(segment :start 0 :duration 10)))
(def beats-data (-> audio (analyze beats)))
;; Use the beat-alternate construct instead of slice-on
(def segments (beat-alternate beats-data (list video-a video-b)))
;; Concatenate with resize normalization
(def synced-video (-> segments
(sequence :resize-mode :fit :priority :width)))
(mux synced-video audio))