Documentation ¶
Index ¶
- Variables
- func GenerateCLIFlags(existingFlags []cli.Flag, hidden bool) ([]cli.Flag, error)
- func InitLoggerFromConfig(config *LoggingConfig)
- func SetLogger(l logger.Logger)
- type APIConfig
- type CodecSpec
- type Config
- type CongestionControlConfig
- type ForwardStatsConfig
- type IngressConfig
- type LimitConfig
- type LoggingConfig
- type NodeSelectorConfig
- type PlayoutDelayConfig
- type PrometheusConfig
- type RTCConfig
- type RegionConfig
- type RoomConfig
- type SIPConfig
- type SignalRelayConfig
- type TURNConfig
- type TURNServer
- type VideoConfig
- type WebHookConfig
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrKeyFileIncorrectPermission = errors.New("key file others permissions must be set to 0") ErrKeysNotSet = errors.New("one of key-file or keys must be provided") )
View Source
var DefaultConfig = Config{ Port: 7880, RTC: RTCConfig{ RTCConfig: rtcconfig.RTCConfig{ UseExternalIP: false, TCPPort: 7881, ICEPortRangeStart: 0, ICEPortRangeEnd: 0, STUNServers: []string{}, }, PacketBufferSize: 500, PacketBufferSizeVideo: 500, PacketBufferSizeAudio: 200, PLIThrottle: sfu.DefaultPLIThrottleConfig, CongestionControl: CongestionControlConfig{ Enabled: true, AllowPause: false, StreamAllocator: streamallocator.DefaultStreamAllocatorConfig, RemoteBWE: remotebwe.DefaultRemoteBWEConfig, UseSendSideBWEInterceptor: false, UseSendSideBWE: false, SendSideBWE: sendsidebwe.DefaultSendSideBWEConfig, }, }, Audio: sfu.DefaultAudioConfig, Video: VideoConfig{ DynacastPauseDelay: 5 * time.Second, StreamTrackerManager: sfu.DefaultStreamTrackerManagerConfig, }, Redis: redisLiveKit.RedisConfig{}, Room: RoomConfig{ AutoCreate: true, EnabledCodecs: []CodecSpec{ {Mime: webrtc.MimeTypeOpus}, {Mime: sfu.MimeTypeAudioRed}, {Mime: webrtc.MimeTypeVP8}, {Mime: webrtc.MimeTypeH264}, {Mime: webrtc.MimeTypeVP9}, {Mime: webrtc.MimeTypeAV1}, {Mime: webrtc.MimeTypeRTX}, }, EmptyTimeout: 5 * 60, DepartureTimeout: 20, CreateRoomEnabled: true, CreateRoomTimeout: 10 * time.Second, CreateRoomAttempts: 3, }, Limit: LimitConfig{ MaxMetadataSize: 64000, MaxAttributesSize: 64000, MaxRoomNameLength: 256, MaxParticipantIdentityLength: 256, MaxParticipantNameLength: 256, }, Logging: LoggingConfig{ PionLevel: "error", }, TURN: TURNConfig{ Enabled: false, }, NodeSelector: NodeSelectorConfig{ Kind: "any", SortBy: "random", SysloadLimit: 0.9, CPULoadLimit: 0.9, }, SignalRelay: SignalRelayConfig{ RetryTimeout: 7500 * time.Millisecond, MinRetryInterval: 500 * time.Millisecond, MaxRetryInterval: 4 * time.Second, StreamBufferSize: 1000, ConnectAttempts: 3, }, PSRPC: rpc.DefaultPSRPCConfig, Keys: map[string]string{}, Metric: metric.DefaultMetricConfig, }
Functions ¶
func GenerateCLIFlags ¶
func InitLoggerFromConfig ¶
func InitLoggerFromConfig(config *LoggingConfig)
Types ¶
type APIConfig ¶
type APIConfig struct { // amount of time to wait for API to execute, default 2s ExecutionTimeout time.Duration `yaml:"execution_timeout,omitempty"` // min amount of time to wait before checking for operation complete CheckInterval time.Duration `yaml:"check_interval,omitempty"` // max amount of time to wait before checking for operation complete MaxCheckInterval time.Duration `yaml:"max_check_interval,omitempty"` }
func DefaultAPIConfig ¶
func DefaultAPIConfig() APIConfig
type Config ¶
type Config struct { Port uint32 `yaml:"port,omitempty"` BindAddresses []string `yaml:"bind_addresses,omitempty"` // PrometheusPort is deprecated PrometheusPort uint32 `yaml:"prometheus_port,omitempty"` Prometheus PrometheusConfig `yaml:"prometheus,omitempty"` RTC RTCConfig `yaml:"rtc,omitempty"` Redis redisLiveKit.RedisConfig `yaml:"redis,omitempty"` Audio sfu.AudioConfig `yaml:"audio,omitempty"` Video VideoConfig `yaml:"video,omitempty"` Room RoomConfig `yaml:"room,omitempty"` TURN TURNConfig `yaml:"turn,omitempty"` Ingress IngressConfig `yaml:"ingress,omitempty"` SIP SIPConfig `yaml:"sip,omitempty"` WebHook WebHookConfig `yaml:"webhook,omitempty"` NodeSelector NodeSelectorConfig `yaml:"node_selector,omitempty"` KeyFile string `yaml:"key_file,omitempty"` Keys map[string]string `yaml:"keys,omitempty"` Region string `yaml:"region,omitempty"` SignalRelay SignalRelayConfig `yaml:"signal_relay,omitempty"` PSRPC rpc.PSRPCConfig `yaml:"psrpc,omitempty"` // Deprecated: LogLevel is deprecated LogLevel string `yaml:"log_level,omitempty"` Logging LoggingConfig `yaml:"logging,omitempty"` Limit LimitConfig `yaml:"limit,omitempty"` Development bool `yaml:"development,omitempty"` Metric metric.MetricConfig `yaml:"metric,omitempty"` // BEGIN OPENVIDU BLOCK OpenVidu openviduconfig.OpenViduConfig `yaml:"openvidu"` }
func (*Config) IsTURNSEnabled ¶
func (*Config) ToCLIFlagNames ¶
func (*Config) ValidateKeys ¶
type CongestionControlConfig ¶
type CongestionControlConfig struct { Enabled bool `yaml:"enabled,omitempty"` AllowPause bool `yaml:"allow_pause,omitempty"` StreamAllocator streamallocator.StreamAllocatorConfig `yaml:"stream_allocator,omitempty"` RemoteBWE remotebwe.RemoteBWEConfig `yaml:"remote_bwe,omitempty"` UseSendSideBWEInterceptor bool `yaml:"use_send_side_bwe_interceptor,omitempty"` UseSendSideBWE bool `yaml:"use_send_side_bwe,omitempty"` SendSideBWE sendsidebwe.SendSideBWEConfig `yaml:"send_side_bwe,omitempty"` }
type ForwardStatsConfig ¶
type IngressConfig ¶
type LimitConfig ¶
type LimitConfig struct { NumTracks int32 `yaml:"num_tracks,omitempty"` BytesPerSec float32 `yaml:"bytes_per_sec,omitempty"` SubscriptionLimitVideo int32 `yaml:"subscription_limit_video,omitempty"` SubscriptionLimitAudio int32 `yaml:"subscription_limit_audio,omitempty"` MaxMetadataSize uint32 `yaml:"max_metadata_size,omitempty"` // total size of all attributes on a participant MaxAttributesSize uint32 `yaml:"max_attributes_size,omitempty"` MaxRoomNameLength int `yaml:"max_room_name_length,omitempty"` MaxParticipantIdentityLength int `yaml:"max_participant_identity_length,omitempty"` MaxParticipantNameLength int `yaml:"max_participant_name_length,omitempty"` }
func (LimitConfig) CheckAttributesSize ¶
func (l LimitConfig) CheckAttributesSize(attributes map[string]string) bool
func (LimitConfig) CheckMetadataSize ¶
func (l LimitConfig) CheckMetadataSize(metadata string) bool
func (LimitConfig) CheckParticipantNameLength ¶
func (l LimitConfig) CheckParticipantNameLength(name string) bool
func (LimitConfig) CheckRoomNameLength ¶
func (l LimitConfig) CheckRoomNameLength(name string) bool
type LoggingConfig ¶
type NodeSelectorConfig ¶
type NodeSelectorConfig struct { Kind string `yaml:"kind,omitempty"` SortBy string `yaml:"sort_by,omitempty"` CPULoadLimit float32 `yaml:"cpu_load_limit,omitempty"` SysloadLimit float32 `yaml:"sysload_limit,omitempty"` Regions []RegionConfig `yaml:"regions,omitempty"` }
type PlayoutDelayConfig ¶
type PrometheusConfig ¶
type RTCConfig ¶
type RTCConfig struct { rtcconfig.RTCConfig `yaml:",inline"` TURNServers []TURNServer `yaml:"turn_servers,omitempty"` // Deprecated StrictACKs bool `yaml:"strict_acks,omitempty"` // Deprecated: use PacketBufferSizeVideo and PacketBufferSizeAudio PacketBufferSize int `yaml:"packet_buffer_size,omitempty"` // Number of packets to buffer for NACK - video PacketBufferSizeVideo int `yaml:"packet_buffer_size_video,omitempty"` // Number of packets to buffer for NACK - audio PacketBufferSizeAudio int `yaml:"packet_buffer_size_audio,omitempty"` // Throttle periods for pli/fir rtcp packets PLIThrottle sfu.PLIThrottleConfig `yaml:"pli_throttle,omitempty"` CongestionControl CongestionControlConfig `yaml:"congestion_control,omitempty"` // allow TCP and TURN/TLS fallback AllowTCPFallback *bool `yaml:"allow_tcp_fallback,omitempty"` // force a reconnect on a publication error ReconnectOnPublicationError *bool `yaml:"reconnect_on_publication_error,omitempty"` // force a reconnect on a subscription error ReconnectOnSubscriptionError *bool `yaml:"reconnect_on_subscription_error,omitempty"` // force a reconnect on a data channel error ReconnectOnDataChannelError *bool `yaml:"reconnect_on_data_channel_error,omitempty"` // Deprecated DataChannelMaxBufferedAmount uint64 `yaml:"data_channel_max_buffered_amount,omitempty"` // Threshold of data channel writing to be considered too slow, data packet could // be dropped for a slow data channel to avoid blocking the room. DatachannelSlowThreshold int `yaml:"datachannel_slow_threshold,omitempty"` ForwardStats ForwardStatsConfig `yaml:"forward_stats,omitempty"` }
type RegionConfig ¶
type RegionConfig struct { Name string `yaml:"name,omitempty"` Lat float64 `yaml:"lat,omitempty"` Lon float64 `yaml:"lon,omitempty"` }
RegionConfig lists available regions and their latitude/longitude, so the selector would prefer regions that are closer
type RoomConfig ¶
type RoomConfig struct { // enable rooms to be automatically created AutoCreate bool `yaml:"auto_create,omitempty"` EnabledCodecs []CodecSpec `yaml:"enabled_codecs,omitempty"` MaxParticipants uint32 `yaml:"max_participants,omitempty"` EmptyTimeout uint32 `yaml:"empty_timeout,omitempty"` DepartureTimeout uint32 `yaml:"departure_timeout,omitempty"` EnableRemoteUnmute bool `yaml:"enable_remote_unmute,omitempty"` PlayoutDelay PlayoutDelayConfig `yaml:"playout_delay,omitempty"` SyncStreams bool `yaml:"sync_streams,omitempty"` CreateRoomEnabled bool `yaml:"create_room_enabled,omitempty"` CreateRoomTimeout time.Duration `yaml:"create_room_timeout,omitempty"` CreateRoomAttempts int `yaml:"create_room_attempts,omitempty"` // deprecated, moved to limits MaxMetadataSize uint32 `yaml:"max_metadata_size,omitempty"` // deprecated, moved to limits MaxRoomNameLength int `yaml:"max_room_name_length,omitempty"` // deprecated, moved to limits MaxParticipantIdentityLength int `yaml:"max_participant_identity_length,omitempty"` RoomConfigurations map[string]*livekit.RoomConfiguration `yaml:"room_configurations,omitempty"` }
type SignalRelayConfig ¶
type SignalRelayConfig struct { RetryTimeout time.Duration `yaml:"retry_timeout,omitempty"` MinRetryInterval time.Duration `yaml:"min_retry_interval,omitempty"` MaxRetryInterval time.Duration `yaml:"max_retry_interval,omitempty"` StreamBufferSize int `yaml:"stream_buffer_size,omitempty"` ConnectAttempts int `yaml:"connect_attempts,omitempty"` }
type TURNConfig ¶
type TURNConfig struct { Enabled bool `yaml:"enabled,omitempty"` Domain string `yaml:"domain,omitempty"` CertFile string `yaml:"cert_file,omitempty"` KeyFile string `yaml:"key_file,omitempty"` TLSPort int `yaml:"tls_port,omitempty"` UDPPort int `yaml:"udp_port,omitempty"` RelayPortRangeStart uint16 `yaml:"relay_range_start,omitempty"` RelayPortRangeEnd uint16 `yaml:"relay_range_end,omitempty"` ExternalTLS bool `yaml:"external_tls,omitempty"` }
type TURNServer ¶
type VideoConfig ¶
type VideoConfig struct { DynacastPauseDelay time.Duration `yaml:"dynacast_pause_delay,omitempty"` StreamTrackerManager sfu.StreamTrackerManagerConfig `yaml:"stream_tracker_manager,omitempty"` }
type WebHookConfig ¶
Click to show internal directories.
Click to hide internal directories.