Documentation
¶
Index ¶
- Constants
- Variables
- func AddWriter(wn io.Writer)
- func InstallPlugin(opt *PluginConfig)
- func MayBeError(info error) (hasError bool)
- func Run(configFile string) (err error)
- type AuthHook
- type ChangeRoomCmd
- type Collection
- type Config
- type InputStream
- type ListenerConfig
- type LogWriter
- type NetWorkInfo
- type OnDropHook
- type OnPublishHook
- type OnSubscribeHook
- type OnSummaryHook
- type OutputStream
- type PluginConfig
- type Publisher
- type Room
- type RoomInfo
- type ServerSummary
- type SubscribeCmd
- type Subscriber
- type SubscriberInfo
- type UnSubscribeCmd
Constants ¶
View Source
const ( PLUGIN_SUBSCRIBER = 1 PLUGIN_PUBLISHER = 1 << 1 PLUGIN_HOOK = 1 << 2 )
Variables ¶
View Source
var (
AllRoom = Collection{}
)
View Source
var AuthHooks = make(AuthHook, 0)
View Source
var ConfigRaw []byte
View Source
var OnDropHooks = make(OnDropHook, 0)
View Source
var OnPublishHooks = make(OnPublishHook, 0)
View Source
var OnSubscribeHooks = make(OnSubscribeHook, 0)
View Source
var OnSummaryHooks = make(OnSummaryHook, 0)
View Source
var (
Plugins = make(map[string]*PluginConfig)
)
View Source
var (
Summary = ServerSummary{}
)
View Source
var Version = "1.0.0"
Functions ¶
func InstallPlugin ¶
func InstallPlugin(opt *PluginConfig)
func MayBeError ¶
Types ¶
type ChangeRoomCmd ¶
type ChangeRoomCmd struct {
*OutputStream
NewRoom *Room
}
type Collection ¶
func (*Collection) Get ¶
func (c *Collection) Get(name string) (result *Room)
type InputStream ¶
type InputStream struct {
*Room
}
func (*InputStream) Close ¶
func (p *InputStream) Close()
func (*InputStream) OnClosed ¶
func (p *InputStream) OnClosed()
func (*InputStream) Publish ¶
func (p *InputStream) Publish(streamPath string, publisher Publisher) bool
func (*InputStream) Running ¶
func (p *InputStream) Running() bool
type ListenerConfig ¶
type ListenerConfig struct {
ListenAddr string
}
type NetWorkInfo ¶
type OnDropHook ¶
type OnDropHook []func(s *OutputStream)
func (OnDropHook) AddHook ¶
func (h OnDropHook) AddHook(hook func(s *OutputStream))
func (OnDropHook) Trigger ¶
func (h OnDropHook) Trigger(s *OutputStream)
type OnPublishHook ¶
type OnPublishHook []func(r *Room)
func (OnPublishHook) AddHook ¶
func (h OnPublishHook) AddHook(hook func(r *Room))
func (OnPublishHook) Trigger ¶
func (h OnPublishHook) Trigger(r *Room)
type OnSubscribeHook ¶
type OnSubscribeHook []func(s *OutputStream)
func (OnSubscribeHook) AddHook ¶
func (h OnSubscribeHook) AddHook(hook func(s *OutputStream))
func (OnSubscribeHook) Trigger ¶
func (h OnSubscribeHook) Trigger(s *OutputStream)
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 OutputStream ¶
type OutputStream struct {
context.Context
*Room
SubscriberInfo
SendHandler func(*avformat.SendPacket) error
Cancel context.CancelFunc
Sign string
VTSent bool
ATSent bool
VSentTime uint32
ASentTime uint32
OffsetTime uint32
// contains filtered or unexported fields
}
func (*OutputStream) Close ¶
func (s *OutputStream) Close()
func (*OutputStream) IsClosed ¶
func (s *OutputStream) IsClosed() bool
func (*OutputStream) Play ¶
func (s *OutputStream) Play(streamPath string) (err error)
type PluginConfig ¶
type Room ¶
type Room struct {
context.Context
Publisher
RoomInfo
Control chan interface{}
Cancel context.CancelFunc
Subscribers map[string]*OutputStream // 订阅者
VideoTag *avformat.AVPacket // 每个视频包都是这样的结构,区别在于Payload的大小.FMS在发送AVC sequence header,需要加上 VideoTags,这个tag 1个字节(8bits)的数据
AudioTag *avformat.AVPacket // 每个音频包都是这样的结构,区别在于Payload的大小.FMS在发送AAC sequence header,需要加上 AudioTags,这个tag 1个字节(8bits)的数据
FirstScreen []*avformat.AVPacket
AudioChan chan *avformat.AVPacket
VideoChan chan *avformat.AVPacket
UseTimestamp bool //是否采用数据包中的时间戳
}
func (*Room) Subscribe ¶
func (r *Room) Subscribe(s *OutputStream)
func (*Room) UnSubscribe ¶
func (r *Room) UnSubscribe(s *OutputStream)
type RoomInfo ¶
type RoomInfo struct {
StreamPath string
StartTime time.Time
SubscriberInfo []*SubscriberInfo
Type string
VideoInfo struct {
PacketCount int
CodecID byte
SPSInfo avformat.SPSInfo
}
AudioInfo struct {
PacketCount int
SoundFormat byte //4bit
SoundRate int //2bit
SoundSize byte //1bit
SoundType byte //1bit
}
}
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
Rooms []*RoomInfo
Children map[string]*ServerSummary
// contains filtered or unexported fields
}
func (*ServerSummary) Add ¶
func (s *ServerSummary) Add()
func (*ServerSummary) Done ¶
func (s *ServerSummary) Done()
func (*ServerSummary) Report ¶
func (s *ServerSummary) Report(slave *ServerSummary)
func (*ServerSummary) Running ¶
func (s *ServerSummary) Running() bool
func (*ServerSummary) StartSummary ¶
func (s *ServerSummary) StartSummary()
type SubscribeCmd ¶
type SubscribeCmd struct {
*OutputStream
}
type Subscriber ¶
type Subscriber interface {
Send(*avformat.SendPacket) error
}
type SubscriberInfo ¶
type UnSubscribeCmd ¶
type UnSubscribeCmd struct {
*OutputStream
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.