config

package
v0.0.0-...-92b04c0 Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2023 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var LocalCert []byte
View Source
var LocalKey []byte

Functions

This section is empty.

Types

type Config

type Config map[string]any

func Struct2Config

func Struct2Config(s any, prefix ...string) (config Config)

func (Config) Assign

func (config Config) Assign(source Config)

覆盖配置

func (Config) CreateElem

func (config Config) CreateElem(eleType reflect.Type) reflect.Value

CreateElem 创建Map或者Slice中的元素

func (Config) Get

func (config Config) Get(key string) (v any)

func (Config) GetChild

func (config Config) GetChild(key string) Config

func (Config) Has

func (config Config) Has(key string) (ok bool)

func (Config) HasChild

func (config Config) HasChild(key string) (ok bool)

func (Config) Merge

func (config Config) Merge(source Config)

合并配置,不覆盖

func (*Config) Set

func (config *Config) Set(key string, value any)

func (Config) Unmarshal

func (config Config) Unmarshal(s any)

type Console

type Console struct {
	Server        string `default:"console.monibuca.com:44944"` //远程控制台地址
	Secret        string //远程控制台密钥
	PublicAddr    string //公网地址,提供远程控制台访问的地址,不配置的话使用自动识别的地址
	PublicAddrTLS string
}

type Engine

type Engine struct {
	Publish
	Subscribe
	HTTP
	Console
	EnableAVCC          bool          `default:"true"`  //启用AVCC格式,rtmp、http-flv协议使用
	EnableRTP           bool          `default:"true"`  //启用RTP格式,rtsp、webrtc等协议使用,已废弃,在 rtp 下面配置
	EnableSubEvent      bool          `default:"true"`  //启用订阅事件,禁用可以提高性能
	EnableAuth          bool          `default:"true"`  //启用鉴权
	LogLang             string        `default:"zh"`    //日志语言
	LogLevel            string        `default:"info"`  //日志级别
	EventBusSize        int           `default:"10"`    //事件总线大小
	PulseInterval       time.Duration `default:"5s"`    //心跳事件间隔
	DisableAll          bool          `default:"false"` //禁用所有插件
	RTPReorderBufferLen int           `default:"50"`    //RTP重排序缓冲区长度
	PoolSize            int           //内存池大小
	// contains filtered or unexported fields
}
var Global *Engine

func (*Engine) GetEnableReport

func (cfg *Engine) GetEnableReport() bool

func (*Engine) GetInstanceId

func (cfg *Engine) GetInstanceId() string

func (*Engine) InitDefaultHttp

func (cfg *Engine) InitDefaultHttp()

func (*Engine) OnEvent

func (cfg *Engine) OnEvent(event any)

func (*Engine) ReceiveRequest

func (cfg *Engine) ReceiveRequest(s quic.Stream, conn quic.Connection) error

func (*Engine) Remote

func (cfg *Engine) Remote(ctx context.Context) (wasConnected bool, err error)

func (*Engine) WsRemote

func (cfg *Engine) WsRemote()

func (*Engine) WtRemote

func (cfg *Engine) WtRemote(ctx context.Context)

type HTTP

type HTTP struct {
	ListenAddr    string
	ListenAddrTLS string
	CertFile      string
	KeyFile       string
	CORS          bool `default:"true"` //是否自动添加CORS头
	UserName      string
	Password      string
	ReadTimeout   time.Duration
	WriteTimeout  time.Duration
	IdleTimeout   time.Duration
	// contains filtered or unexported fields
}

func (*HTTP) AddMiddleware

func (config *HTTP) AddMiddleware(middleware Middleware)

func (*HTTP) GetHTTPConfig

func (config *HTTP) GetHTTPConfig() *HTTP

func (*HTTP) Handle

func (config *HTTP) Handle(path string, f http.Handler)

func (*HTTP) Handler

func (config *HTTP) Handler(r *http.Request) (h http.Handler, pattern string)

func (*HTTP) Listen

func (config *HTTP) Listen(ctx context.Context) error

ListenAddrs Listen http and https

type HTTPConfig

type HTTPConfig interface {
	GetHTTPConfig() *HTTP
	Listen(ctx context.Context) error
	Handle(string, http.Handler)
	Handler(*http.Request) (http.Handler, string)
	AddMiddleware(Middleware)
}

type HTTPPlugin

type HTTPPlugin interface {
	Plugin
	http.Handler
}

type Middleware

type Middleware func(string, http.Handler) http.Handler

type Plugin

type Plugin interface {
	// 可能的入参类型:FirstConfig 第一次初始化配置,Config 后续配置更新,SE系列(StateEvent)流状态变化事件
	OnEvent(any)
}

type Publish

type Publish struct {
	PubAudio          bool          `default:"true"`
	PubVideo          bool          `default:"true"`
	InsertSEI         bool          // 是否启用SEI插入
	KickExist         bool          // 是否踢掉已经存在的发布者
	PublishTimeout    time.Duration `default:"10s"` // 发布无数据超时
	WaitCloseTimeout  time.Duration // 延迟自动关闭(等待重连)
	DelayCloseTimeout time.Duration // 延迟自动关闭(无订阅时)
	IdleTimeout       time.Duration // 空闲(无订阅)超时
	PauseTimeout      time.Duration `default:"30s"` // 暂停超时
	BufferTime        time.Duration // 缓冲长度(单位:秒),0代表取最近关键帧
	SpeedLimit        time.Duration `default:"500ms"` //速度限制最大等待时间
	Key               string        // 发布鉴权key
	SecretArgName     string        `default:"secret"`   // 发布鉴权参数名
	ExpireArgName     string        `default:"expire"`   // 发布鉴权失效时间参数名
	RingSize          string        `default:"256-1024"` // 初始缓冲区大小
}

func (Publish) GetPublishConfig

func (c Publish) GetPublishConfig() Publish

type PublishConfig

type PublishConfig interface {
	GetPublishConfig() Publish
}

type Pull

type Pull struct {
	RePull       int               // 断开后自动重拉,0 表示不自动重拉,-1 表示无限重拉,高于0 的数代表最大重拉次数
	EnableRegexp bool              // 是否启用正则表达式
	PullOnStart  map[string]string // 启动时拉流的列表
	PullOnSub    map[string]string // 订阅时自动拉流的列表
	Proxy        string            // 代理地址
}

func (*Pull) AddPullOnStart

func (p *Pull) AddPullOnStart(streamPath string, url string)

func (*Pull) AddPullOnSub

func (p *Pull) AddPullOnSub(streamPath string, url string)

func (*Pull) CheckPullOnStart

func (p *Pull) CheckPullOnStart(streamPath string) string

func (*Pull) CheckPullOnSub

func (p *Pull) CheckPullOnSub(streamPath string) string

func (*Pull) GetPullConfig

func (p *Pull) GetPullConfig() *Pull

type PullConfig

type PullConfig interface {
	GetPullConfig() *Pull
}

type Push

type Push struct {
	EnableRegexp bool              // 是否启用正则表达式
	RePush       int               // 断开后自动重推,0 表示不自动重推,-1 表示无限重推,高于0 的数代表最大重推次数
	PushList     map[string]string // 自动推流列表
	Proxy        string            // 代理地址
}

func (*Push) AddPush

func (p *Push) AddPush(url string, streamPath string)

func (*Push) CheckPush

func (p *Push) CheckPush(streamPath string) string

func (*Push) GetPushConfig

func (p *Push) GetPushConfig() *Push

type PushConfig

type PushConfig interface {
	GetPushConfig() *Push
}

type Quic

type Quic struct {
	ListenAddr string
	CertFile   string
	KeyFile    string
}

func (*Quic) ListenQuic

func (q *Quic) ListenQuic(ctx context.Context, plugin QuicPlugin) error

type QuicConfig

type QuicConfig interface {
	ListenQuic(context.Context, QuicPlugin) error
}

type QuicPlugin

type QuicPlugin interface {
	Plugin
	ServeQuic(quic.Connection)
}

type Subscribe

type Subscribe struct {
	SubAudio        bool          `default:"true"`
	SubVideo        bool          `default:"true"`
	SubVideoArgName string        `default:"vts"`  // 指定订阅的视频轨道参数名
	SubAudioArgName string        `default:"ats"`  // 指定订阅的音频轨道参数名
	SubDataArgName  string        `default:"dts"`  // 指定订阅的数据轨道参数名
	SubModeArgName  string        `default:"mode"` // 指定订阅的模式参数名
	SubAudioTracks  []string      // 指定订阅的音频轨道
	SubVideoTracks  []string      // 指定订阅的视频轨道
	SubDataTracks   []string      // 指定订阅的数据轨道
	SubMode         int           // 0,实时模式:追赶发布者进度,在播放首屏后等待发布者的下一个关键帧,然后跳到该帧。1、首屏后不进行追赶。2、从缓冲最大的关键帧开始播放,也不追赶,需要发布者配置缓存长度
	SyncMode        int           // 0,采用时间戳同步,1,采用写入时间同步
	IFrameOnly      bool          // 只要关键帧
	WaitTimeout     time.Duration `default:"10s"` // 等待流超时
	WriteBufferSize int           `default:"0"`   // 写缓冲大小
	Key             string        // 订阅鉴权key
	SecretArgName   string        `default:"secret"` // 订阅鉴权参数名
	ExpireArgName   string        `default:"expire"` // 订阅鉴权失效时间参数名
	Internal        bool          `default:"false"`  // 是否内部订阅
}

func (*Subscribe) GetSubscribeConfig

func (c *Subscribe) GetSubscribeConfig() *Subscribe

type SubscribeConfig

type SubscribeConfig interface {
	GetSubscribeConfig() *Subscribe
}

type TCP

type TCP struct {
	ListenAddr    string
	ListenAddrTLS string
	CertFile      string
	KeyFile       string
	ListenNum     int  //同时并行监听数量,0为CPU核心数量
	NoDelay       bool //是否禁用Nagle算法
}

func (*TCP) ListenTCP

func (tcp *TCP) ListenTCP(ctx context.Context, plugin TCPPlugin) error

type TCPConfig

type TCPConfig interface {
	ListenTCP(context.Context, TCPPlugin) error
}

type TCPPlugin

type TCPPlugin interface {
	Plugin
	ServeTCP(net.Conn)
}

Jump to

Keyboard shortcuts

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