Documentation
¶
Index ¶
- Constants
- type AudioConfig
- type AzureConfig
- type BaseConfig
- type CPUCostConfig
- type DebugConfig
- type File
- type FileConfig
- type GCPConfig
- type Image
- type ImageConfig
- type Manifest
- type OutputConfig
- type PipelineConfig
- func (p *PipelineConfig) GetEncodedOutputs() []OutputConfig
- func (p *PipelineConfig) GetFileConfig() *FileConfig
- func (p *PipelineConfig) GetImageConfigs() []*ImageConfig
- func (p *PipelineConfig) GetSegmentConfig() *SegmentConfig
- func (p *PipelineConfig) GetStreamConfig() *StreamConfig
- func (p *PipelineConfig) GetWebsocketConfig() *StreamConfig
- func (p *PipelineConfig) Update(request *rpc.StartEgressRequest) error
- func (p *PipelineConfig) UpdateInfoFromSDK(identifier string, replacements map[string]string, w, h uint32) error
- type Playlist
- type ProxyConfig
- type S3Config
- type SDKSourceParams
- type Segment
- type SegmentConfig
- type ServiceConfig
- type SessionLimits
- type SourceConfig
- type StorageConfig
- type Stream
- type StreamConfig
- func (o *StreamConfig) AddStream(rawUrl string, outputType types.OutputType) (*Stream, error)
- func (o StreamConfig) GetOutputType() types.OutputType
- func (o *StreamConfig) GetStream(rawUrl string) (*Stream, error)
- func (o *StreamConfig) ValidateUrl(rawUrl string, outputType types.OutputType) (parsed string, redacted string, streamID string, err error)
- type TrackSource
- type VideoConfig
- type WebSourceParams
Constants ¶
View Source
const Latency = uint64(3e9)
View Source
const StreamKeyframeInterval = 4.0
View Source
const TmpDir = "/home/egress/tmp"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AudioConfig ¶ added in v1.5.6
type AzureConfig ¶
type BaseConfig ¶ added in v1.5.3
type BaseConfig struct {
NodeID string // do not supply - will be overwritten
// required
Redis *redis.RedisConfig `yaml:"redis"` // redis config
ApiKey string `yaml:"api_key"` // (env LIVEKIT_API_KEY)
ApiSecret string `yaml:"api_secret"` // (env LIVEKIT_API_SECRET)
WsUrl string `yaml:"ws_url"` // (env LIVEKIT_WS_URL)
// optional
Logging *logger.Config `yaml:"logging"` // logging config
TemplateBase string `yaml:"template_base"` // custom template base url
ClusterID string `yaml:"cluster_id"` // cluster this instance belongs to
EnableChromeSandbox bool `yaml:"enable_chrome_sandbox"` // enable Chrome sandbox, requires extra docker configuration
MaxUploadQueue int `yaml:"max_upload_queue"` // maximum upload queue size, in minutes
DisallowLocalStorage bool `yaml:"disallow_local_storage"` // require an upload config for all requests
EnableRoomCompositeSDKSource bool `yaml:"enable_room_composite_sdk_source"` // attempt to render supported audio only room composite use cases using the SDK source instead of Chrome. This option will be removed when this becomes the default behavior eventually.
IOCreateTimeout time.Duration `yaml:"io_create_timeout"` // timeout for CreateEgress calls
IOUpdateTimeout time.Duration `yaml:"io_update_timeout"` // timeout for UpdateEgress calls
SessionLimits `yaml:"session_limits"` // session duration limits
StorageConfig *StorageConfig `yaml:"storage,omitempty"` // storage config
BackupConfig *StorageConfig `yaml:"backup,omitempty"` // backup config, for storage failures
// dev/debugging
Insecure bool `yaml:"insecure"` // allow chrome to connect to an insecure websocket
Debug DebugConfig `yaml:"debug"` // create dot file on internal error
}
type CPUCostConfig ¶ added in v1.0.4
type CPUCostConfig struct {
MaxCpuUtilization float64 `yaml:"max_cpu_utilization"` // maximum allowed CPU utilization when deciding to accept a request. Default to 80%
MaxMemory float64 `yaml:"max_memory"` // maximum allowed memory usage in GB. 0 to disable
MaxConcurrentWeb int32 `yaml:"max_concurrent_web"` // maximum allowed chrome/x/pulse instances
RoomCompositeCpuCost float64 `yaml:"room_composite_cpu_cost"`
AudioRoomCompositeCpuCost float64 `yaml:"audio_room_composite_cpu_cost"`
WebCpuCost float64 `yaml:"web_cpu_cost"`
AudioWebCpuCost float64 `yaml:"audio_web_cpu_cost"`
ParticipantCpuCost float64 `yaml:"participant_cpu_cost"`
TrackCompositeCpuCost float64 `yaml:"track_composite_cpu_cost"`
TrackCpuCost float64 `yaml:"track_cpu_cost"`
}
type DebugConfig ¶ added in v1.7.5
type DebugConfig struct {
EnableProfiling bool `yaml:"enable_profiling"` // create dot file and pprof on internal error
StorageConfig `yaml:",inline"` // upload config (S3, Azure, GCP, or AliOSS)
}
type FileConfig ¶ added in v1.7.1
type FileConfig struct {
FileInfo *livekit.FileInfo
LocalFilepath string
StorageFilepath string
DisableManifest bool
StorageConfig *StorageConfig
// contains filtered or unexported fields
}
func (FileConfig) GetOutputType ¶ added in v1.7.1
func (o FileConfig) GetOutputType() types.OutputType
type GCPConfig ¶
type GCPConfig struct {
CredentialsJSON string `yaml:"credentials_json"` // (env GOOGLE_APPLICATION_CREDENTIALS)
Bucket string `yaml:"bucket"`
ProxyConfig *ProxyConfig `yaml:"proxy_config"`
}
type ImageConfig ¶ added in v1.7.13
type ImageConfig struct {
Id string // Used internally to map a gst Bin/element back to a sink and as part of the path
ImagesInfo *livekit.ImagesInfo
LocalDir string
StorageDir string
ImagePrefix string
ImageSuffix livekit.ImageFileSuffix
ImageExtension types.FileExtension
DisableManifest bool
StorageConfig *StorageConfig
CaptureInterval uint32
Width int32
Height int32
ImageOutCodec types.MimeType
// contains filtered or unexported fields
}
func (ImageConfig) GetOutputType ¶ added in v1.7.13
func (o ImageConfig) GetOutputType() types.OutputType
type Manifest ¶ added in v1.5.3
type Manifest struct {
EgressID string `json:"egress_id,omitempty"`
RoomID string `json:"room_id,omitempty"`
RoomName string `json:"room_name,omitempty"`
Url string `json:"url,omitempty"`
StartedAt int64 `json:"started_at,omitempty"`
EndedAt int64 `json:"ended_at,omitempty"`
PublisherIdentity string `json:"publisher_identity,omitempty"`
TrackID string `json:"track_id,omitempty"`
TrackKind string `json:"track_kind,omitempty"`
TrackSource string `json:"track_source,omitempty"`
AudioTrackID string `json:"audio_track_id,omitempty"`
VideoTrackID string `json:"video_track_id,omitempty"`
Files []*File `json:"files,omitempty"`
Playlists []*Playlist `json:"playlists,omitempty"`
Images []*Image `json:"images,omitempty"`
// contains filtered or unexported fields
}
func (*Manifest) AddPlaylist ¶ added in v1.9.0
type OutputConfig ¶ added in v1.5.6
type OutputConfig interface {
GetOutputType() types.OutputType
}
type PipelineConfig ¶ added in v1.5.3
type PipelineConfig struct {
BaseConfig `yaml:",inline"`
HandlerID string `yaml:"handler_id"`
TmpDir string `yaml:"tmp_dir"`
types.RequestType `yaml:"-"`
SourceConfig `yaml:"-"`
AudioConfig `yaml:"-"`
VideoConfig `yaml:"-"`
Outputs map[types.EgressType][]OutputConfig `yaml:"-"`
OutputCount atomic.Int32 `yaml:"-"`
FinalizationRequired bool `yaml:"-"`
Info *livekit.EgressInfo `yaml:"-"`
Manifest *Manifest `yaml:"-"`
}
func GetValidatedPipelineConfig ¶ added in v1.5.3
func GetValidatedPipelineConfig(conf *ServiceConfig, req *rpc.StartEgressRequest) (*PipelineConfig, error)
func NewPipelineConfig ¶ added in v1.5.3
func NewPipelineConfig(confString string, req *rpc.StartEgressRequest) (*PipelineConfig, error)
func (*PipelineConfig) GetEncodedOutputs ¶ added in v1.7.13
func (p *PipelineConfig) GetEncodedOutputs() []OutputConfig
func (*PipelineConfig) GetFileConfig ¶ added in v1.7.1
func (p *PipelineConfig) GetFileConfig() *FileConfig
func (*PipelineConfig) GetImageConfigs ¶ added in v1.7.13
func (p *PipelineConfig) GetImageConfigs() []*ImageConfig
func (*PipelineConfig) GetSegmentConfig ¶ added in v1.7.1
func (p *PipelineConfig) GetSegmentConfig() *SegmentConfig
func (*PipelineConfig) GetStreamConfig ¶ added in v1.7.1
func (p *PipelineConfig) GetStreamConfig() *StreamConfig
func (*PipelineConfig) GetWebsocketConfig ¶ added in v1.7.1
func (p *PipelineConfig) GetWebsocketConfig() *StreamConfig
func (*PipelineConfig) Update ¶ added in v1.5.3
func (p *PipelineConfig) Update(request *rpc.StartEgressRequest) error
func (*PipelineConfig) UpdateInfoFromSDK ¶ added in v1.5.6
func (p *PipelineConfig) UpdateInfoFromSDK(identifier string, replacements map[string]string, w, h uint32) error
used for sdk input source
type Playlist ¶ added in v1.9.0
type Playlist struct {
Location string `json:"location,omitempty"`
Segments []*Segment `json:"segments,omitempty"`
// contains filtered or unexported fields
}
func (*Playlist) AddSegment ¶ added in v1.9.0
func (*Playlist) UpdateLocation ¶ added in v1.9.0
type ProxyConfig ¶ added in v1.8.3
type S3Config ¶
type S3Config struct {
AccessKey string `yaml:"access_key"` // (env AWS_ACCESS_KEY_ID)
Secret string `yaml:"secret"` // (env AWS_SECRET_ACCESS_KEY)
SessionToken string `yaml:"session_token"` // (env AWS_SESSION_TOKEN)
Region string `yaml:"region"` // (env AWS_DEFAULT_REGION)
Endpoint string `yaml:"endpoint"`
Bucket string `yaml:"bucket"`
ForcePathStyle bool `yaml:"force_path_style"`
ProxyConfig *ProxyConfig `yaml:"proxy_config"`
MaxRetries int `yaml:"max_retries"`
MaxRetryDelay time.Duration `yaml:"max_retry_delay"`
MinRetryDelay time.Duration `yaml:"min_retry_delay"`
Metadata map[string]string `yaml:"metadata"`
Tagging string `yaml:"tagging"`
ContentDisposition string `yaml:"content_disposition"`
}
type SDKSourceParams ¶ added in v1.5.6
type SegmentConfig ¶ added in v1.7.1
type SegmentConfig struct {
SegmentsInfo *livekit.SegmentsInfo
LocalDir string
StorageDir string
PlaylistFilename string
LivePlaylistFilename string
SegmentPrefix string
SegmentSuffix livekit.SegmentedFileSuffix
SegmentDuration int
DisableManifest bool
StorageConfig *StorageConfig
// contains filtered or unexported fields
}
func (SegmentConfig) GetOutputType ¶ added in v1.7.1
func (o SegmentConfig) GetOutputType() types.OutputType
type ServiceConfig ¶ added in v1.5.3
type ServiceConfig struct {
BaseConfig `yaml:",inline"`
HealthPort int `yaml:"health_port"` // health check port
TemplatePort int `yaml:"template_port"` // room composite template server port
PrometheusPort int `yaml:"prometheus_port"` // prometheus handler port
DebugHandlerPort int `yaml:"debug_handler_port"` // egress debug handler port
*CPUCostConfig `yaml:"cpu_cost"` // CPU costs for the different egress types
}
func NewServiceConfig ¶ added in v1.5.3
func NewServiceConfig(confString string) (*ServiceConfig, error)
func (*ServiceConfig) InitDefaults ¶ added in v1.9.0
func (c *ServiceConfig) InitDefaults()
type SessionLimits ¶ added in v1.2.0
type SessionLimits struct {
FileOutputMaxDuration time.Duration `yaml:"file_output_max_duration"`
StreamOutputMaxDuration time.Duration `yaml:"stream_output_max_duration"`
SegmentOutputMaxDuration time.Duration `yaml:"segment_output_max_duration"`
ImageOutputMaxDuration time.Duration `yaml:"image_output_max_duration"`
}
type SourceConfig ¶ added in v1.5.6
type SourceConfig struct {
SourceType types.SourceType
WebSourceParams
SDKSourceParams
}
type StorageConfig ¶ added in v1.7.5
type StorageConfig struct {
PathPrefix string `yaml:"prefix"` // prefix applied to all filenames
GeneratePresignedUrl bool `yaml:"generate_presigned_url"`
S3 *S3Config `yaml:"s3"` // upload to s3
Azure *AzureConfig `yaml:"azure"` // upload to azure
GCP *GCPConfig `yaml:"gcp"` // upload to gcp
AliOSS *S3Config `yaml:"alioss"` // upload to aliyun
}
func (*StorageConfig) IsLocal ¶ added in v1.9.0
func (c *StorageConfig) IsLocal() bool
type Stream ¶ added in v1.8.6
type Stream struct {
Name string // gstreamer stream ID
ParsedUrl string // parsed/validated url
RedactedUrl string // url with stream key removed
StreamID string // stream ID used by rtmpconnection
StreamInfo *livekit.StreamInfo
}
func (*Stream) UpdateEndTime ¶ added in v1.8.6
type StreamConfig ¶ added in v1.7.1
type StreamConfig struct {
// url -> Stream
Streams sync.Map
// contains filtered or unexported fields
}
func (*StreamConfig) AddStream ¶ added in v1.8.6
func (o *StreamConfig) AddStream(rawUrl string, outputType types.OutputType) (*Stream, error)
func (StreamConfig) GetOutputType ¶ added in v1.7.1
func (o StreamConfig) GetOutputType() types.OutputType
func (*StreamConfig) GetStream ¶ added in v1.8.6
func (o *StreamConfig) GetStream(rawUrl string) (*Stream, error)
func (*StreamConfig) ValidateUrl ¶ added in v1.8.6
func (o *StreamConfig) ValidateUrl(rawUrl string, outputType types.OutputType) ( parsed string, redacted string, streamID string, err error, )
type TrackSource ¶ added in v1.7.8
type VideoConfig ¶ added in v1.5.6
Click to show internal directories.
Click to hide internal directories.