Documentation ¶
Index ¶
- Variables
- type Card
- type Config
- func (config *Config) Get(key string) (v *Config)
- func (config *Config) GetFormily() (r Object)
- func (config *Config) GetMap() map[string]any
- func (config Config) Has(key string) (ok bool)
- func (config *Config) IsMap() bool
- func (config *Config) MarshalJSON() ([]byte, error)
- func (config *Config) Parse(s any, prefix ...string)
- func (config *Config) ParseDefaultYaml(defaultYaml map[string]any)
- func (config *Config) ParseGlobal(g *Config)
- func (config *Config) ParseModifyFile(conf map[string]any)
- func (config *Config) ParseUserFile(conf map[string]any)
- func (config *Config) Range(f func(key string, value Config))
- type Console
- type Engine
- func (cfg *Engine) GetEnableReport() bool
- func (cfg *Engine) GetInstanceId() string
- func (cfg *Engine) InitDefaultHttp()
- func (cfg *Engine) OnEvent(event any)
- func (cfg *Engine) ReceiveRequest(s quic.Stream, conn quic.Connection) error
- func (cfg *Engine) Remote(ctx context.Context) (wasConnected bool, err error)
- func (cfg *Engine) WsRemote()
- func (cfg *Engine) WtRemote(ctx context.Context)
- type HTTP
- type HTTPConfig
- type HTTPPlugin
- type Middleware
- type Object
- type Plugin
- type Property
- type Publish
- type PublishConfig
- type Pull
- type PullConfig
- type Push
- type PushConfig
- type Quic
- type QuicConfig
- type QuicPlugin
- type Regexp
- type Subscribe
- type SubscribeConfig
- type TCP
- type TCPConfig
- type TCPPlugin
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 struct { Ptr reflect.Value //指向配置结构体值 Value any //当前值,优先级:动态修改值>环境变量>配置文件>defaultYaml>全局配置>默认值 Modify any //动态修改的值 Env any //环境变量中的值 File any //配置文件中的值 Global *Config //全局配置中的值,指针类型 Default any //默认值 Enum []struct { Label string `json:"label"` Value any `json:"value"` } // contains filtered or unexported fields }
func (*Config) GetFormily ¶
func (*Config) MarshalJSON ¶
func (*Config) ParseDefaultYaml ¶
ParseDefaultYaml 第三步读取内嵌默认配置
func (*Config) ParseGlobal ¶
ParseDefaultYaml 第二步读取全局配置
func (*Config) ParseModifyFile ¶
ParseModifyFile 第五步读取动态修改配置文件
func (*Config) ParseUserFile ¶
ParseFile 第四步读取用户配置文件
type Engine ¶
type Engine struct { Publish Subscribe HTTP Console EnableAVCC bool `default:"true" desc:"启用AVCC格式,rtmp、http-flv协议使用"` //启用AVCC格式,rtmp、http-flv协议使用 EnableRTP bool `default:"true" desc:"启用RTP格式,rtsp、webrtc等协议使用"` //启用RTP格式,rtsp、webrtc等协议使用 EnableSubEvent bool `default:"true" desc:"启用订阅事件,禁用可以提高性能"` //启用订阅事件,禁用可以提高性能 EnableAuth bool `default:"true" desc:"启用鉴权"` //启用鉴权 LogLang string `default:"zh" desc:"日志语言" enum:"zh:中文,en:英文"` //日志语言 LogLevel string `default:"info" enum:"trace:跟踪,debug:调试,info:信息,warn:警告,error:错误"` //日志级别 EventBusSize int `default:"10" desc:"事件总线大小"` //事件总线大小 PulseInterval time.Duration `default:"5s" desc:"心跳事件间隔"` //心跳事件间隔 DisableAll bool `default:"false" desc:"禁用所有插件"` //禁用所有插件 RTPReorderBufferLen int `default:"50" desc:"RTP重排序缓冲区长度"` //RTP重排序缓冲区长度 PoolSize int `desc:"内存池大小"` //内存池大小 // contains filtered or unexported fields }
var Global *Engine
func (*Engine) GetEnableReport ¶
func (*Engine) GetInstanceId ¶
func (*Engine) InitDefaultHttp ¶
func (cfg *Engine) InitDefaultHttp()
func (*Engine) ReceiveRequest ¶
type HTTP ¶
type HTTP struct { ListenAddr string `desc:"监听地址"` ListenAddrTLS string `desc:"监听地址HTTPS"` CertFile string `desc:"HTTPS证书文件"` KeyFile string `desc:"HTTPS密钥文件"` CORS bool `default:"true" desc:"是否自动添加CORS头"` //是否自动添加CORS头 UserName string `desc:"基本身份认证用户名"` Password string `desc:"基本身份认证密码"` ReadTimeout time.Duration `desc:"读取超时"` WriteTimeout time.Duration `desc:"写入超时"` IdleTimeout time.Duration `desc:"空闲超时"` // contains filtered or unexported fields }
func (*HTTP) AddMiddleware ¶
func (config *HTTP) AddMiddleware(middleware Middleware)
func (*HTTP) GetHTTPConfig ¶
type HTTPConfig ¶
type HTTPPlugin ¶
type Plugin ¶
type Plugin interface { // 可能的入参类型:FirstConfig 第一次初始化配置,Config 后续配置更新,SE系列(StateEvent)流状态变化事件 OnEvent(any) }
type Property ¶
type Property struct { Type string `json:"type"` Title string `json:"title"` Description string `json:"description"` Enum []struct { Label string `json:"label"` Value any `json:"value"` } `json:"enum,omitempty"` Items *Object `json:"items,omitempty"` Properties map[string]any `json:"properties,omitempty"` Default any `json:"default,omitempty"` Decorator string `json:"x-decorator"` DecoratorProps map[string]any `json:"x-decorator-props,omitempty"` Component string `json:"x-component"` ComponentProps map[string]any `json:"x-component-props,omitempty"` Index int `json:"x-index"` }
type Publish ¶
type Publish struct { PubAudio bool `default:"true" desc:"是否发布音频"` PubVideo bool `default:"true" desc:"是否发布视频"` InsertSEI bool `desc:"是否启用SEI插入"` // 是否启用SEI插入 KickExist bool `desc:"是否踢掉已经存在的发布者"` // 是否踢掉已经存在的发布者 PublishTimeout time.Duration `default:"10s" desc:"发布无数据超时"` // 发布无数据超时 WaitCloseTimeout time.Duration `desc:"延迟自动关闭(等待重连)"` // 延迟自动关闭(等待重连) DelayCloseTimeout time.Duration `desc:"延迟自动关闭(无订阅时)"` // 延迟自动关闭(无订阅时) IdleTimeout time.Duration `desc:"空闲(无订阅)超时"` // 空闲(无订阅)超时 PauseTimeout time.Duration `default:"30s" desc:"暂停超时时间"` // 暂停超时 BufferTime time.Duration `desc:"缓冲长度(单位:秒),0代表取最近关键帧"` // 缓冲长度(单位:秒),0代表取最近关键帧 SpeedLimit time.Duration `default:"500ms" desc:"速度限制最大等待时间,0则不等待"` //速度限制最大等待时间 Key string `desc:"发布鉴权key"` // 发布鉴权key SecretArgName string `default:"secret" desc:"发布鉴权参数名"` // 发布鉴权参数名 ExpireArgName string `default:"expire" desc:"发布鉴权失效时间参数名"` // 发布鉴权失效时间参数名 RingSize string `default:"256-1024" desc:"缓冲范围"` // 初始缓冲区大小 }
func (Publish) GetPublishConfig ¶
type PublishConfig ¶
type PublishConfig interface {
GetPublishConfig() Publish
}
type Pull ¶
type Pull struct { RePull int `desc:"断开后自动重试次数,0:不重试,-1:无限重试"` // 断开后自动重拉,0 表示不自动重拉,-1 表示无限重拉,高于0 的数代表最大重拉次数 EnableRegexp bool `desc:"是否启用正则表达式"` // 是否启用正则表达式 PullOnStart map[string]string `desc:"启动时拉流的列表"` // 启动时拉流的列表 PullOnSub map[string]string `desc:"订阅时自动拉流的列表"` // 订阅时自动拉流的列表 Proxy string `desc:"代理地址"` // 代理地址 PullOnSubLocker sync.RWMutex `yaml:"-" json:"-"` PullOnStartLocker sync.RWMutex `yaml:"-" json:"-"` }
func (*Pull) CheckPullOnStart ¶
func (*Pull) CheckPullOnSub ¶
func (*Pull) GetPullConfig ¶
type PullConfig ¶
type PullConfig interface {
GetPullConfig() *Pull
}
type Push ¶
type Push struct { EnableRegexp bool `desc:"是否启用正则表达式"` // 是否启用正则表达式 RePush int `desc:"断开后自动重试次数,0:不重试,-1:无限重试"` // 断开后自动重推,0 表示不自动重推,-1 表示无限重推,高于0 的数代表最大重推次数 PushList map[string]string `desc:"自动推流列表"` // 自动推流列表 Proxy string `desc:"代理地址"` // 代理地址 }
func (*Push) GetPushConfig ¶
type PushConfig ¶
type PushConfig interface {
GetPushConfig() *Push
}
type Quic ¶
type Quic struct { ListenAddr string `desc:"监听地址,格式为ip:port,ip 可省略默认监听所有网卡"` CertFile string `desc:"证书文件"` KeyFile string `desc:"私钥文件"` }
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 Regexp ¶
func (Regexp) MarshalJSON ¶
func (Regexp) MarshalYAML ¶
func (*Regexp) UnmarshalJSON ¶
func (*Regexp) UnmarshalYAML ¶
type Subscribe ¶
type Subscribe struct { SubAudio bool `default:"true" desc:"是否订阅音频"` SubVideo bool `default:"true" desc:"是否订阅视频"` SubVideoArgName string `default:"vts" desc:"定订阅的视频轨道参数名"` // 指定订阅的视频轨道参数名 SubAudioArgName string `default:"ats" desc:"指定订阅的音频轨道参数名"` // 指定订阅的音频轨道参数名 SubDataArgName string `default:"dts" desc:"指定订阅的数据轨道参数名"` // 指定订阅的数据轨道参数名 SubModeArgName string `desc:"指定订阅的模式参数名"` // 指定订阅的模式参数名 SubAudioTracks []string `desc:"指定订阅的音频轨道"` // 指定订阅的音频轨道 SubVideoTracks []string `desc:"指定订阅的视频轨道"` // 指定订阅的视频轨道 SubDataTracks []string `desc:"指定订阅的数据轨道"` // 指定订阅的数据轨道 SubMode int `desc:"订阅模式" enum:"0:实时模式,1:首屏后不进行追赶,2:从缓冲最大的关键帧开始播放"` // 0,实时模式:追赶发布者进度,在播放首屏后等待发布者的下一个关键帧,然后跳到该帧。1、首屏后不进行追赶。2、从缓冲最大的关键帧开始播放,也不追赶,需要发布者配置缓存长度 SyncMode int `desc:"同步模式" enum:"0:采用时间戳同步,1:采用写入时间同步"` // 0,采用时间戳同步,1,采用写入时间同步 IFrameOnly bool `desc:"只要关键帧"` // 只要关键帧 WaitTimeout time.Duration `default:"10s" desc:"等待流超时时间"` // 等待流超时 WriteBufferSize int `desc:"写缓冲大小"` // 写缓冲大小 Key string `desc:"订阅鉴权key"` // 订阅鉴权key SecretArgName string `default:"secret" desc:"订阅鉴权参数名"` // 订阅鉴权参数名 ExpireArgName string `default:"expire" desc:"订阅鉴权失效时间参数名"` // 订阅鉴权失效时间参数名 Internal bool `default:"false" desc:"是否内部订阅"` // 是否内部订阅 }
func (*Subscribe) GetSubscribeConfig ¶
type SubscribeConfig ¶
type SubscribeConfig interface {
GetSubscribeConfig() *Subscribe
}
type TCP ¶
type TCP struct { ListenAddr string `desc:"监听地址,格式为ip:port,ip 可省略默认监听所有网卡"` ListenAddrTLS string `desc:"监听地址,格式为ip:port,ip 可省略默认监听所有网卡"` CertFile string `desc:"证书文件"` KeyFile string `desc:"私钥文件"` ListenNum int `desc:"同时并行监听数量,0为CPU核心数量"` //同时并行监听数量,0为CPU核心数量 NoDelay bool `desc:"是否禁用Nagle算法"` //是否禁用Nagle算法 }
Source Files ¶
Click to show internal directories.
Click to hide internal directories.