orchestrator

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 21, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	InputFile           string
	OutputFile          string
	WorkDir             string
	ElevenLabsAPIKey    string
	VoiceID             string
	Width               int
	Height              int
	FrameRate           int
	OutputIndividualDir string    // Directory for individual slide videos (Udemy)
	TransitionDuration  float64   // Duration of transitions between slides in seconds
	ScreenDevice        string    // Screen capture device (macOS, auto-detected if empty)
	AudioManifest       string    // Path to audio manifest file (from 'marp2video tts')
	ProgressWriter      io.Writer // Writer for progress output (nil to disable)
}

Config holds orchestrator configuration

type Orchestrator

type Orchestrator struct {
	// contains filtered or unexported fields
}

Orchestrator coordinates the entire video generation process

func NewOrchestrator

func NewOrchestrator(config Config) *Orchestrator

NewOrchestrator creates a new orchestrator

func (*Orchestrator) Process

func (o *Orchestrator) Process(ctx context.Context) error

Process orchestrates the entire conversion process

type SegmentConfig added in v0.3.0

type SegmentConfig struct {
	// Source is the content source (transcript, config, etc.)
	Source source.ContentSource

	// OutputFile is the final video output path
	OutputFile string

	// WorkDir is where temporary files are stored
	WorkDir string

	// AudioOutputDir is where to save audio tracks (if set, audio is preserved)
	// Structure: {AudioOutputDir}/{language}/combined.mp3
	AudioOutputDir string

	// Languages is the list of languages to generate (uses default if empty)
	Languages []string

	// Width and Height are video dimensions
	Width  int
	Height int

	// FrameRate is the video frame rate
	FrameRate int

	// TransitionDuration is crossfade duration between segments (seconds)
	TransitionDuration float64

	// Headless runs browser in headless mode
	Headless bool

	// ProgressWriter receives progress updates
	ProgressWriter io.Writer

	// Subtitles enables simple subtitle generation from voiceover timing
	Subtitles bool

	// SubtitlesSTT enables word-level subtitles using speech-to-text
	SubtitlesSTT bool

	// SubtitlesBurn burns subtitles into video (permanent)
	SubtitlesBurn bool

	// SubtitleFormat is "srt" or "vtt" (default: srt)
	SubtitleFormat string

	// DeepgramAPIKey for STT subtitles
	DeepgramAPIKey string

	// NoAudio generates video without audio (TTS still used for timing/subtitles)
	NoAudio bool

	// Parallel is the number of concurrent segment recordings (default 1 = sequential)
	Parallel int

	// FastEncoding uses hardware acceleration for video encoding when available
	FastEncoding bool

	// SegmentLimit limits processing to first N segments (0 = no limit)
	SegmentLimit int

	// StepLimit limits browser segments to first N steps (0 = no limit)
	StepLimit int
}

SegmentConfig holds configuration for the segment-based orchestrator.

type SegmentOrchestrator added in v0.3.0

type SegmentOrchestrator struct {
	// contains filtered or unexported fields
}

SegmentOrchestrator coordinates video generation using the segment abstraction. It works with any ContentSource (transcript JSON, config YAML) and any segment type (slides, browser demos).

func NewSegmentOrchestrator added in v0.3.0

func NewSegmentOrchestrator(config SegmentConfig, ttsGen *tts.SegmentTTSGenerator) *SegmentOrchestrator

NewSegmentOrchestrator creates a new segment-based orchestrator.

func (*SegmentOrchestrator) Process added in v0.3.0

func (o *SegmentOrchestrator) Process(ctx context.Context) error

Process runs the complete video generation pipeline.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL