Documentation ¶
Index ¶
- Constants
- Variables
- func AddWriter(wn io.Writer)
- func InstallPlugin(opt *PluginConfig)
- func MayBeError(info error) (hasError bool)
- func Print(v ...interface{})
- func Printf(format string, v ...interface{})
- func Println(v ...interface{})
- func Run(configFile string) (err error)
- type AuthHook
- type ChangeStreamCmd
- type Collection
- type ListenerConfig
- type LogWriter
- type MultiLogWriter
- type NALU
- type NetWorkInfo
- type OnDropHook
- type OnPublishHook
- type OnStreamClosedHook
- type OnSubscribeHook
- type OnSummaryHook
- type OnUnSubscribeHook
- type PluginConfig
- type Publisher
- type Ring
- func (r Ring) Clone() *Ring
- func (r *Ring) Dispose()
- func (r *Ring) GetAt(index int) *RingItem
- func (r *Ring) GetBuffer() *bytes.Buffer
- func (r *Ring) GetLast() *RingItem
- func (r *Ring) GetNext() *RingItem
- func (r *Ring) GoBack()
- func (r *Ring) GoNext()
- func (r *Ring) GoTo(index int)
- func (r *Ring) NextR()
- func (r *Ring) NextW()
- func (r *Ring) Timeout() bool
- type RingItem
- type ServerSummary
- type Stream
- func (r *Stream) GetBuffer() *bytes.Buffer
- func (r *Stream) PushAudio(timestamp uint32, payload []byte)
- func (r *Stream) PushVideo(timestamp uint32, payload []byte)
- func (r *Stream) Run()
- func (r *Stream) Subscribe(s *Subscriber)
- func (r *Stream) UnSubscribe(s *Subscriber)
- func (r *Stream) WriteASC(asc []byte)
- func (r *Stream) WritePPS(pps []byte)
- func (r *Stream) WriteSPS(sps []byte)
- type StreamInfo
- type SubscribeCmd
- type Subscriber
- type SubscriberInfo
- type UnSubscribeCmd
Constants ¶
View Source
const ( PLUGIN_NONE = 0 //独立插件 PLUGIN_SUBSCRIBER = 1 //订阅者插件 PLUGIN_PUBLISHER = 1 << 1 //发布者插件 PLUGIN_HOOK = 1 << 2 //钩子插件 PLUGIN_APP = 1 << 3 //应用插件 )
Variables ¶
View Source
var ( // ConfigRaw 配置信息的原始数据 ConfigRaw []byte // Version 引擎版本号 Version string // EngineInfo 引擎信息 EngineInfo = &struct { Version *string StartTime time.Time //启动时间 EnableWaitStream *bool RingSize *int }{&Version, time.Now(), &config.EnableWaitStream, &config.RingSize} )
View Source
var AuthHooks = make(AuthHook, 0)
View Source
var OnDropHooks = make(OnDropHook, 0)
View Source
var OnPublishHooks = make(OnPublishHook, 0)
View Source
var OnStreamClosedHooks = make(OnStreamClosedHook, 0)
View Source
var OnSubscribeHooks = make(OnSubscribeHook, 0)
View Source
var OnSummaryHooks = make(OnSummaryHook, 0)
View Source
var OnUnSubscribeHooks = make(OnUnSubscribeHook, 0)
View Source
var Plugins = make(map[string]*PluginConfig)
Plugins 所有的插件配置
View Source
var Summary = ServerSummary{}
Summary 系统摘要数据
Functions ¶
func Printf ¶
func Printf(format string, v ...interface{})
Printf calls Output to print to the standard logger. Arguments are handled in the manner of fmt.Printf.
Types ¶
type ChangeStreamCmd ¶
type ChangeStreamCmd struct { *Subscriber NewStream *Stream }
ChangeStreamCmd 切换流命令
type ListenerConfig ¶
type ListenerConfig struct {
ListenAddr string
}
ListenerConfig 带有监听地址端口的插件配置类型
type MultiLogWriter ¶
type NALU ¶ added in v2.1.0
type NALU struct { Publisher // contains filtered or unexported fields }
type NetWorkInfo ¶
type NetWorkInfo struct { Name string Receive uint64 Sent uint64 ReceiveSpeed uint64 SentSpeed uint64 }
NetWorkInfo 网速信息
type OnDropHook ¶
type OnDropHook []func(s *Subscriber)
func (OnDropHook) AddHook ¶
func (h OnDropHook) AddHook(hook func(s *Subscriber))
func (OnDropHook) Trigger ¶
func (h OnDropHook) Trigger(s *Subscriber)
type OnPublishHook ¶
type OnPublishHook []func(r *Stream)
func (OnPublishHook) AddHook ¶
func (h OnPublishHook) AddHook(hook func(r *Stream))
func (OnPublishHook) Trigger ¶
func (h OnPublishHook) Trigger(r *Stream)
type OnStreamClosedHook ¶
type OnStreamClosedHook []func(*Stream)
func (OnStreamClosedHook) AddHook ¶
func (h OnStreamClosedHook) AddHook(hook func(*Stream))
func (OnStreamClosedHook) Trigger ¶
func (h OnStreamClosedHook) Trigger(v *Stream)
type OnSubscribeHook ¶
type OnSubscribeHook []func(s *Subscriber)
func (OnSubscribeHook) AddHook ¶
func (h OnSubscribeHook) AddHook(hook func(s *Subscriber))
func (OnSubscribeHook) Trigger ¶
func (h OnSubscribeHook) Trigger(s *Subscriber)
type OnSummaryHook ¶
type OnSummaryHook []func(bool)
func (OnSummaryHook) AddHook ¶
func (h OnSummaryHook) AddHook(hook func(bool))
func (OnSummaryHook) Trigger ¶
func (h OnSummaryHook) Trigger(v bool)
type OnUnSubscribeHook ¶
type OnUnSubscribeHook []func(s *Subscriber)
func (OnUnSubscribeHook) AddHook ¶
func (h OnUnSubscribeHook) AddHook(hook func(s *Subscriber))
func (OnUnSubscribeHook) Trigger ¶
func (h OnUnSubscribeHook) Trigger(s *Subscriber)
type PluginConfig ¶
type PluginConfig struct { Name string //插件名称 Type byte //类型 Config interface{} //插件配置 UIFile *embed.FS //界面目录 Version string //插件版本 Dir string //插件代码路径 Run func() //插件启动函数 HotConfig map[string]func(interface{}) //热修改配置 }
PluginConfig 插件配置定义
type Publisher ¶
type Publisher struct { context.Context AutoUnPublish bool // 当无人订阅时自动停止发布 *Stream // contains filtered or unexported fields }
Publisher 发布者实体定义
type Ring ¶
type Ring struct { *RingItem Size int Index int Flag int32 // contains filtered or unexported fields }
Ring 环形缓冲,使用数组实现
type ServerSummary ¶
type ServerSummary struct { Address string Memory struct { Total uint64 Free uint64 Used uint64 Usage float64 } CPUUsage float64 HardDisk struct { Total uint64 Free uint64 Used uint64 Usage float64 } NetWork []NetWorkInfo Streams []*StreamInfo Children map[string]*ServerSummary // contains filtered or unexported fields }
ServerSummary 系统摘要定义
func (*ServerSummary) StartSummary ¶
func (s *ServerSummary) StartSummary()
StartSummary 开始定时采集数据,每秒一次
type Stream ¶
type Stream struct { context.Context *Publisher StreamInfo //可序列化,供后台查看的数据 Control chan interface{} Cancel context.CancelFunc Subscribers map[string]*Subscriber // 订阅者 VideoTag *AVPacket // 每个视频包都是这样的结构,区别在于Payload的大小.FMS在发送AVC sequence header,需要加上 VideoTags,这个tag 1个字节(8bits)的数据 AudioTag *AVPacket // 每个音频包都是这样的结构,区别在于Payload的大小.FMS在发送AAC sequence header,需要加上 AudioTags,这个tag 1个字节(8bits)的数据 FirstScreen *Ring //最近的关键帧位置,首屏渲染 AVRing *Ring //数据环 WaitPub chan struct{} //用于订阅和等待发布者 UseTimestamp bool //是否采用数据包中的时间戳 SPS []byte PPS []byte }
Stream 流定义
type StreamInfo ¶
type StreamInfo struct { StreamPath string StartTime time.Time SubscriberInfo []*SubscriberInfo Type string VideoInfo struct { PacketCount int CodecID byte SPSInfo SPSInfo BPS int GOP int //关键帧间隔 // contains filtered or unexported fields } AudioInfo struct { PacketCount int SoundFormat byte //4bit SoundRate int //2bit SoundSize byte //1bit SoundType byte //1bit BPS int // contains filtered or unexported fields } HasAudio bool HasVideo bool EnableVideo *bool EnableAudio *bool }
StreamInfo 流可序列化信息,用于控制台显示
type Subscriber ¶
type Subscriber struct { context.Context *Stream SubscriberInfo MetaData func(stream *Stream) error OnData func(*avformat.SendPacket) error Cancel context.CancelFunc Sign string OffsetTime uint32 avformat.SendPacket // contains filtered or unexported fields }
Subscriber 订阅者实体定义
func (*Subscriber) Subscribe ¶
func (s *Subscriber) Subscribe(streamPath string) (err error)
Subscribe 开始订阅
func (*Subscriber) SubscribeWithContext ¶ added in v2.3.0
func (s *Subscriber) SubscribeWithContext(streamPath string, ctx context.Context) (err error)
SubscribeWithContext 带额外取消功能的订阅
Source Files ¶
Click to show internal directories.
Click to hide internal directories.