config

package
v1.3.5 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2023 License: Apache-2.0 Imports: 15 Imported by: 12

Documentation

Index

Constants

View Source
const (
	CongestionControlProbeModePadding CongestionControlProbeMode = "padding"
	CongestionControlProbeModeMedia   CongestionControlProbeMode = "media"

	StreamTrackerTypePacket StreamTrackerType = "packet"
	StreamTrackerTypeFrame  StreamTrackerType = "frame"

	StatsUpdateInterval          = time.Second * 10
	TelemetryStatsUpdateInterval = time.Second * 30
)

Variables

View Source
var (
	ErrKeyFileIncorrectPermission = errors.New("key file must have 0600 permission")
	ErrKeysNotSet                 = errors.New("one of key-file or keys must be provided")
)
View Source
var DefaultStunServers = []string{
	"stun.l.google.com:19302",
	"stun1.l.google.com:19302",
}

Functions

func GenerateCLIFlags added in v1.3.0

func GenerateCLIFlags(existingFlags []cli.Flag, hidden bool) ([]cli.Flag, error)

func GetExternalIP added in v0.10.5

func GetExternalIP(ctx context.Context, stunServers []string, localAddr net.Addr) (string, error)

GetExternalIP return external IP for localAddr from stun server. If localAddr is nil, a local address is chosen automatically, else the address will be used to validate the external IP is accessible from the outside.

func GetLocalIPAddresses added in v0.15.3

func GetLocalIPAddresses(includeLoopback bool) ([]string, error)

Types

type APIConfig added in v1.3.2

type APIConfig struct {
	// amount of time to wait for API to execute, default 2s
	ExecutionTimeout time.Duration

	// amount of time to wait before checking for operation complete
	CheckInterval time.Duration
}

not exposed to YAML

func DefaultAPIConfig added in v1.3.2

func DefaultAPIConfig() APIConfig

type AudioConfig

type AudioConfig struct {
	// minimum level to be considered active, 0-127, where 0 is loudest
	ActiveLevel uint8 `yaml:"active_level"`
	// percentile to measure, a participant is considered active if it has exceeded the ActiveLevel more than
	// MinPercentile% of the time
	MinPercentile uint8 `yaml:"min_percentile"`
	// interval to update clients, in ms
	UpdateInterval uint32 `yaml:"update_interval"`
	// smoothing for audioLevel values sent to the client.
	// audioLevel will be an average of `smooth_intervals`, 0 to disable
	SmoothIntervals uint32 `yaml:"smooth_intervals"`
}

type CodecSpec added in v0.10.1

type CodecSpec struct {
	Mime     string `yaml:"mime"`
	FmtpLine string `yaml:"fmtp_line"`
}

type Config

type Config struct {
	Port           uint32                   `yaml:"port"`
	BindAddresses  []string                 `yaml:"bind_addresses"`
	PrometheusPort uint32                   `yaml:"prometheus_port,omitempty"`
	Environment    string                   `yaml:"environment,omitempty"`
	RTC            RTCConfig                `yaml:"rtc,omitempty"`
	Redis          redisLiveKit.RedisConfig `yaml:"redis,omitempty"`
	Audio          AudioConfig              `yaml:"audio,omitempty"`
	Video          VideoConfig              `yaml:"video,omitempty"`
	Room           RoomConfig               `yaml:"room,omitempty"`
	TURN           TURNConfig               `yaml:"turn,omitempty"`
	Egress         EgressConfig             `yaml:"egress,omitempty"`
	Ingress        IngressConfig            `yaml:"ingress,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"`
	// LogLevel is deprecated
	LogLevel string        `yaml:"log_level,omitempty"`
	Logging  LoggingConfig `yaml:"logging,omitempty"`
	Limit    LimitConfig   `yaml:"limit,omitempty"`

	Development bool `yaml:"development,omitempty"`
}

func NewConfig

func NewConfig(confString string, strictMode bool, c *cli.Context, baseFlags []cli.Flag) (*Config, error)

func (*Config) IsTURNSEnabled added in v1.2.1

func (conf *Config) IsTURNSEnabled() bool

func (*Config) ToCLIFlagNames added in v1.3.0

func (conf *Config) ToCLIFlagNames(existingFlags []cli.Flag) map[string]reflect.Value

func (*Config) ValidateKeys added in v1.3.2

func (conf *Config) ValidateKeys() error

type CongestionControlConfig added in v0.15.2

type CongestionControlConfig struct {
	Enabled            bool                       `yaml:"enabled"`
	AllowPause         bool                       `yaml:"allow_pause"`
	UseSendSideBWE     bool                       `yaml:"send_side_bandwidth_estimation,omitempty"`
	ProbeMode          CongestionControlProbeMode `yaml:"padding_mode,omitempty"`
	MinChannelCapacity int64                      `yaml:"min_channel_capacity,omitempty"`
}

type CongestionControlProbeMode added in v0.15.5

type CongestionControlProbeMode string

type EgressConfig added in v1.3.3

type EgressConfig struct {
	UsePsRPC bool `yaml:"use_psrpc"`
}

type IPsConfig added in v1.2.4

type IPsConfig struct {
	Includes []string `yaml:"includes"`
	Excludes []string `yaml:"excludes"`
}

type IngressConfig added in v1.2.0

type IngressConfig struct {
	RTMPBaseURL string `yaml:"rtmp_base_url"`
}

type InterfacesConfig added in v0.15.6

type InterfacesConfig struct {
	Includes []string `yaml:"includes"`
	Excludes []string `yaml:"excludes"`
}

type LimitConfig added in v0.15.0

type LimitConfig struct {
	NumTracks   int32   `yaml:"num_tracks"`
	BytesPerSec float32 `yaml:"bytes_per_sec"`
}

type LoggingConfig added in v0.15.3

type LoggingConfig struct {
	logger.Config `yaml:",inline"`
	PionLevel     string `yaml:"pion_level,omitempty"`
}

type NodeSelectorConfig added in v0.12.3

type NodeSelectorConfig struct {
	Kind         string         `yaml:"kind"`
	SortBy       string         `yaml:"sort_by"`
	CPULoadLimit float32        `yaml:"cpu_load_limit"`
	SysloadLimit float32        `yaml:"sysload_limit"`
	Regions      []RegionConfig `yaml:"regions"`
}

type PLIThrottleConfig added in v0.9.14

type PLIThrottleConfig struct {
	LowQuality  time.Duration `yaml:"low_quality,omitempty"`
	MidQuality  time.Duration `yaml:"mid_quality,omitempty"`
	HighQuality time.Duration `yaml:"high_quality,omitempty"`
}

type RTCConfig

type RTCConfig struct {
	UDPPort                 uint32           `yaml:"udp_port,omitempty"`
	TCPPort                 uint32           `yaml:"tcp_port,omitempty"`
	ICEPortRangeStart       uint32           `yaml:"port_range_start,omitempty"`
	ICEPortRangeEnd         uint32           `yaml:"port_range_end,omitempty"`
	NodeIP                  string           `yaml:"node_ip,omitempty"`
	NodeIPAutoGenerated     bool             `yaml:"-"`
	STUNServers             []string         `yaml:"stun_servers,omitempty"`
	TURNServers             []TURNServer     `yaml:"turn_servers,omitempty"`
	UseExternalIP           bool             `yaml:"use_external_ip"`
	UseICELite              bool             `yaml:"use_ice_lite,omitempty"`
	Interfaces              InterfacesConfig `yaml:"interfaces"`
	IPs                     IPsConfig        `yaml:"ips"`
	EnableLoopbackCandidate bool             `yaml:"enable_loopback_candidate"`
	UseMDNS                 bool             `yaml:"use_mdns"`
	StrictACKs              bool             `yaml:"strict_acks"`

	// Number of packets to buffer for NACK
	PacketBufferSize int `yaml:"packet_buffer_size,omitempty"`

	// Throttle periods for pli/fir rtcp packets
	PLIThrottle PLIThrottleConfig `yaml:"pli_throttle,omitempty"`

	CongestionControl CongestionControlConfig `yaml:"congestion_control,omitempty"`

	// allow TCP and TURN/TLS fallback
	AllowTCPFallback *bool `yaml:"allow_tcp_fallback,omitempty"`

	// for testing, disable UDP
	ForceTCP bool `yaml:"force_tcp,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"`
}

type RegionConfig added in v0.13.5

type RegionConfig struct {
	Name string  `yaml:"name"`
	Lat  float64 `yaml:"lat"`
	Lon  float64 `yaml:"lon"`
}

RegionConfig lists available regions and their latitude/longitude, so the selector would prefer regions that are closer

type RoomConfig added in v0.10.1

type RoomConfig struct {
	// enable rooms to be automatically created
	AutoCreate         bool        `yaml:"auto_create"`
	EnabledCodecs      []CodecSpec `yaml:"enabled_codecs"`
	MaxParticipants    uint32      `yaml:"max_participants"`
	EmptyTimeout       uint32      `yaml:"empty_timeout"`
	EnableRemoteUnmute bool        `yaml:"enable_remote_unmute"`
	MaxMetadataSize    uint32      `yaml:"max_metadata_size"`
}

type StreamTrackerConfig added in v1.3.3

type StreamTrackerConfig struct {
	StreamTrackerType     StreamTrackerType                   `yaml:"stream_tracker_type,omitempty"`
	BitrateReportInterval map[int32]time.Duration             `yaml:"bitrate_report_interval,omitempty"`
	PacketTracker         map[int32]StreamTrackerPacketConfig `yaml:"packet_tracker,omitempty"`
	FrameTracker          map[int32]StreamTrackerFrameConfig  `yaml:"frame_tracker,omitempty"`
}

type StreamTrackerFrameConfig added in v1.3.3

type StreamTrackerFrameConfig struct {
	MinFPS float64 `yaml:"min_fps"`
}

type StreamTrackerPacketConfig added in v1.3.3

type StreamTrackerPacketConfig struct {
	SamplesRequired uint32        `yaml:"samples_required"` // number of samples needed per cycle
	CyclesRequired  uint32        `yaml:"cycles_required"`  // number of cycles needed to be active
	CycleDuration   time.Duration `yaml:"cycle_duration"`
}

type StreamTrackerType added in v1.3.3

type StreamTrackerType string

type StreamTrackersConfig added in v1.3.3

type StreamTrackersConfig struct {
	Video       StreamTrackerConfig `yaml:"video"`
	Screenshare StreamTrackerConfig `yaml:"screenshare"`
}

type TURNConfig

type TURNConfig struct {
	Enabled             bool   `yaml:"enabled"`
	Domain              string `yaml:"domain"`
	CertFile            string `yaml:"cert_file"`
	KeyFile             string `yaml:"key_file"`
	TLSPort             int    `yaml:"tls_port"`
	UDPPort             int    `yaml:"udp_port"`
	RelayPortRangeStart uint16 `yaml:"relay_range_start,omitempty"`
	RelayPortRangeEnd   uint16 `yaml:"relay_range_end,omitempty"`
	ExternalTLS         bool   `yaml:"external_tls"`
}

type TURNServer added in v0.15.4

type TURNServer struct {
	Host       string `yaml:"host"`
	Port       int    `yaml:"port"`
	Protocol   string `yaml:"protocol"`
	Username   string `yaml:"username,omitempty"`
	Credential string `yaml:"credential,omitempty"`
}

type VideoConfig added in v0.15.6

type VideoConfig struct {
	DynacastPauseDelay time.Duration        `yaml:"dynacast_pause_delay,omitempty"`
	StreamTracker      StreamTrackersConfig `yaml:"stream_tracker,omitempty"`
}

type WebHookConfig added in v0.12.1

type WebHookConfig struct {
	URLs []string `yaml:"urls"`
	// key to use for webhook
	APIKey string `yaml:"api_key"`
}

Jump to

Keyboard shortcuts

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