Documentation
¶
Index ¶
- Constants
- Variables
- func Dispose()
- func Entry(confFile string)
- type Config
- type GOP
- type GOPCache
- type Group
- func (group *Group) AddHTTPFLVSubSession(session *httpflv.SubSession)
- func (group *Group) AddHTTPTSSubSession(session *httpts.SubSession)
- func (group *Group) AddRTMPPubSession(session *rtmp.ServerSession) bool
- func (group *Group) AddRTMPPullSession(session *rtmp.PullSession) bool
- func (group *Group) AddRTMPPushSession(url string, session *rtmp.PushSession)
- func (group *Group) AddRTMPSubSession(session *rtmp.ServerSession)
- func (group *Group) AddRTSPPubSession(session *rtsp.PubSession) bool
- func (group *Group) DelHTTPFLVSubSession(session *httpflv.SubSession)
- func (group *Group) DelHTTPTSSubSession(session *httpts.SubSession)
- func (group *Group) DelRTMPPubSession(session *rtmp.ServerSession)
- func (group *Group) DelRTMPPullSession(session *rtmp.PullSession)
- func (group *Group) DelRTMPPushSession(url string, session *rtmp.PushSession)
- func (group *Group) DelRTMPSubSession(session *rtmp.ServerSession)
- func (group *Group) DelRTSPPubSession(session *rtsp.PubSession)
- func (group *Group) DelRTSPSubSession(session *rtsp.SubSession)
- func (group *Group) Dispose()
- func (group *Group) GetStat() base.StatGroup
- func (group *Group) HandleNewRTSPSubSessionDescribe(session *rtsp.SubSession) (ok bool, sdp []byte)
- func (group *Group) HandleNewRTSPSubSessionPlay(session *rtsp.SubSession) bool
- func (group *Group) HasInSession() bool
- func (group *Group) HasOutSession() bool
- func (group *Group) IsHLSMuxerAlive() bool
- func (group *Group) IsTotalEmpty() bool
- func (group *Group) KickOutSession(sessionID string) bool
- func (group *Group) OnAVConfig(asc, vps, sps, pps []byte)
- func (group *Group) OnAVPacket(pkt base.AVPacket)
- func (group *Group) OnRTPPacket(pkt rtprtcp.RTPPacket)
- func (group *Group) OnReadRTMPAVMsg(msg base.RTMPMsg)
- func (group *Group) OnTSPackets(rawFrame []byte, boundary bool)
- func (group *Group) RunLoop()
- func (group *Group) StartPull(url string)
- func (group *Group) StringifyDebugStats() string
- func (group *Group) Tick()
- type HLSConfig
- type HTTPAPIConfig
- type HTTPAPIServer
- type HTTPAPIServerObserver
- type HTTPFLVConfig
- type HTTPNotify
- func (h *HTTPNotify) OnPubStart(info base.PubStartInfo)
- func (h *HTTPNotify) OnPubStop(info base.PubStopInfo)
- func (h *HTTPNotify) OnRTMPConnect(info base.RTMPConnectInfo)
- func (h *HTTPNotify) OnServerStart()
- func (h *HTTPNotify) OnSubStart(info base.SubStartInfo)
- func (h *HTTPNotify) OnSubStop(info base.SubStopInfo)
- func (h *HTTPNotify) OnUpdate(info base.UpdateInfo)
- func (h *HTTPNotify) RunLoop()
- type HTTPNotifyConfig
- type HTTPTSConfig
- type LazyChunkDivider
- type LazyGet
- type LazyRTMPMsg2FLVTag
- type PProfConfig
- type PostTask
- type RTMPConfig
- type RTSPConfig
- type RelayPullConfig
- type RelayPushConfig
- type ServerManager
- func (sm *ServerManager) Dispose()
- func (sm *ServerManager) GetGroup(appName string, streamName string) *Group
- func (sm *ServerManager) OnCtrlKickOutSession(info base.APICtrlKickOutSession) base.HTTPResponseBasic
- func (sm *ServerManager) OnCtrlStartPull(info base.APICtrlStartPullReq)
- func (sm *ServerManager) OnDelHTTPFLVSubSession(session *httpflv.SubSession)
- func (sm *ServerManager) OnDelHTTPTSSubSession(session *httpts.SubSession)
- func (sm *ServerManager) OnDelRTMPPubSession(session *rtmp.ServerSession)
- func (sm *ServerManager) OnDelRTMPSubSession(session *rtmp.ServerSession)
- func (sm *ServerManager) OnDelRTSPPubSession(session *rtsp.PubSession)
- func (sm *ServerManager) OnDelRTSPSession(session *rtsp.ServerCommandSession)
- func (sm *ServerManager) OnDelRTSPSubSession(session *rtsp.SubSession)
- func (sm *ServerManager) OnNewHTTPFLVSubSession(session *httpflv.SubSession) bool
- func (sm *ServerManager) OnNewHTTPTSSubSession(session *httpts.SubSession) bool
- func (sm *ServerManager) OnNewRTMPPubSession(session *rtmp.ServerSession) bool
- func (sm *ServerManager) OnNewRTMPSubSession(session *rtmp.ServerSession) bool
- func (sm *ServerManager) OnNewRTSPPubSession(session *rtsp.PubSession) bool
- func (sm *ServerManager) OnNewRTSPSessionConnect(session *rtsp.ServerCommandSession)
- func (sm *ServerManager) OnNewRTSPSubSessionDescribe(session *rtsp.SubSession) (ok bool, sdp []byte)
- func (sm *ServerManager) OnNewRTSPSubSessionPlay(session *rtsp.SubSession) bool
- func (sm *ServerManager) OnRTMPConnect(session *rtmp.ServerSession, opa rtmp.ObjectPairArray)
- func (sm *ServerManager) OnStatAllGroup() (sgs []base.StatGroup)
- func (sm *ServerManager) OnStatGroup(streamName string) *base.StatGroup
- func (sm *ServerManager) RunLoop()
Constants ¶
const ConfigVersion = "0.0.1"
Variables ¶
var ErrLogic = errors.New("lal.logic: fxxk")
Functions ¶
Types ¶
type Config ¶
type Config struct { RTMPConfig RTMPConfig `json:"rtmp"` HTTPFLVConfig HTTPFLVConfig `json:"httpflv"` HLSConfig HLSConfig `json:"hls"` HTTPTSConfig HTTPTSConfig `json:"httpts"` RTSPConfig RTSPConfig `json:"rtsp"` RelayPushConfig RelayPushConfig `json:"relay_push"` RelayPullConfig RelayPullConfig `json:"relay_pull"` HTTPAPIConfig HTTPAPIConfig `json:"http_api"` ServerID string `json:"server_id"` HTTPNotifyConfig HTTPNotifyConfig `json:"http_notify"` PProfConfig PProfConfig `json:"pprof"` LogConfig nazalog.Option `json:"log"` }
type GOPCache ¶ added in v0.7.0
type GOPCache struct { Metadata []byte VideoSeqHeader []byte AACSeqHeader []byte // contains filtered or unexported fields }
func NewGOPCache ¶ added in v0.10.0
func (*GOPCache) GetGOPCount ¶ added in v0.10.0
func (*GOPCache) GetGOPDataAt ¶ added in v0.10.0
type Group ¶
type Group struct { UniqueKey string // const after init // contains filtered or unexported fields }
func (*Group) AddHTTPFLVSubSession ¶ added in v0.4.0
func (group *Group) AddHTTPFLVSubSession(session *httpflv.SubSession)
func (*Group) AddHTTPTSSubSession ¶ added in v0.15.0
func (group *Group) AddHTTPTSSubSession(session *httpts.SubSession)
TODO chef:
这里应该也要考虑触发hls muxer开启 也即HTTPTS sub需要使用hls muxer,hls muxer开启和关闭都要考虑HTTPTS sub
func (*Group) AddRTMPPubSession ¶
func (group *Group) AddRTMPPubSession(session *rtmp.ServerSession) bool
func (*Group) AddRTMPPullSession ¶ added in v0.12.0
func (group *Group) AddRTMPPullSession(session *rtmp.PullSession) bool
func (*Group) AddRTMPPushSession ¶ added in v0.12.0
func (group *Group) AddRTMPPushSession(url string, session *rtmp.PushSession)
func (*Group) AddRTMPSubSession ¶
func (group *Group) AddRTMPSubSession(session *rtmp.ServerSession)
func (*Group) AddRTSPPubSession ¶ added in v0.14.0
func (group *Group) AddRTSPPubSession(session *rtsp.PubSession) bool
TODO chef: rtsp package中,增加回调返回值判断,如果是false,将连接关掉
func (*Group) DelHTTPFLVSubSession ¶ added in v0.4.0
func (group *Group) DelHTTPFLVSubSession(session *httpflv.SubSession)
func (*Group) DelHTTPTSSubSession ¶ added in v0.15.0
func (group *Group) DelHTTPTSSubSession(session *httpts.SubSession)
func (*Group) DelRTMPPubSession ¶
func (group *Group) DelRTMPPubSession(session *rtmp.ServerSession)
func (*Group) DelRTMPPullSession ¶ added in v0.12.0
func (group *Group) DelRTMPPullSession(session *rtmp.PullSession)
func (*Group) DelRTMPPushSession ¶ added in v0.12.0
func (group *Group) DelRTMPPushSession(url string, session *rtmp.PushSession)
func (*Group) DelRTMPSubSession ¶
func (group *Group) DelRTMPSubSession(session *rtmp.ServerSession)
func (*Group) DelRTSPPubSession ¶ added in v0.15.0
func (group *Group) DelRTSPPubSession(session *rtsp.PubSession)
func (*Group) DelRTSPSubSession ¶ added in v0.17.0
func (group *Group) DelRTSPSubSession(session *rtsp.SubSession)
func (*Group) Dispose ¶
func (group *Group) Dispose()
主动释放所有资源。保证所有资源的生命周期逻辑上都在我们的控制中。降低出bug的几率,降低心智负担。 注意,Dispose后,不应再使用这个对象。 值得一提,如果是从其他协程回调回来的消息,在使用Group中的资源前,要判断资源是否存在以及可用。
TODO chef:
后续弄个协程来替换掉目前锁的方式,来做消息同步。这样有个好处,就是不用写很多的资源有效判断。统一写一个就好了。 目前Dispose在IsTotalEmpty时调用,暂时没有这个问题。
func (*Group) HandleNewRTSPSubSessionDescribe ¶ added in v0.18.0
func (group *Group) HandleNewRTSPSubSessionDescribe(session *rtsp.SubSession) (ok bool, sdp []byte)
func (*Group) HandleNewRTSPSubSessionPlay ¶ added in v0.18.0
func (group *Group) HandleNewRTSPSubSessionPlay(session *rtsp.SubSession) bool
func (*Group) HasInSession ¶ added in v0.17.0
func (*Group) HasOutSession ¶ added in v0.17.0
func (*Group) IsHLSMuxerAlive ¶ added in v0.17.0
func (*Group) IsTotalEmpty ¶
func (*Group) KickOutSession ¶ added in v0.17.0
func (*Group) OnAVConfig ¶ added in v0.16.0
rtsp.PubSession
func (*Group) OnAVPacket ¶ added in v0.14.0
rtsp.PubSession
func (*Group) OnRTPPacket ¶ added in v0.17.0
rtsp.PubSession
func (*Group) OnReadRTMPAVMsg ¶ added in v0.5.0
rtmp.PubSession or rtmp.PullSession
func (*Group) OnTSPackets ¶ added in v0.15.0
hls.Muxer
func (*Group) StringifyDebugStats ¶ added in v0.19.0
type HLSConfig ¶ added in v0.10.0
type HLSConfig struct { SubListenAddr string `json:"sub_listen_addr"` hls.MuxerConfig CleanupFlag bool `json:"cleanup_flag"` }
type HTTPAPIConfig ¶ added in v0.16.0
type HTTPAPIServer ¶ added in v0.16.0
type HTTPAPIServer struct {
// contains filtered or unexported fields
}
func NewHTTPAPIServer ¶ added in v0.16.0
func NewHTTPAPIServer(addr string, observer HTTPAPIServerObserver) *HTTPAPIServer
func (*HTTPAPIServer) Listen ¶ added in v0.16.0
func (h *HTTPAPIServer) Listen() (err error)
func (*HTTPAPIServer) Runloop ¶ added in v0.16.0
func (h *HTTPAPIServer) Runloop() error
type HTTPAPIServerObserver ¶ added in v0.16.0
type HTTPAPIServerObserver interface { OnStatAllGroup() []base.StatGroup OnStatGroup(streamName string) *base.StatGroup OnCtrlStartPull(info base.APICtrlStartPullReq) OnCtrlKickOutSession(info base.APICtrlKickOutSession) base.HTTPResponseBasic }
type HTTPFLVConfig ¶ added in v0.10.0
type HTTPFLVConfig struct { httpflv.ServerConfig GOPNum int `json:"gop_num"` }
type HTTPNotify ¶ added in v0.17.0
type HTTPNotify struct {
// contains filtered or unexported fields
}
func (*HTTPNotify) OnPubStart ¶ added in v0.17.0
func (h *HTTPNotify) OnPubStart(info base.PubStartInfo)
func (*HTTPNotify) OnPubStop ¶ added in v0.17.0
func (h *HTTPNotify) OnPubStop(info base.PubStopInfo)
func (*HTTPNotify) OnRTMPConnect ¶ added in v0.17.0
func (h *HTTPNotify) OnRTMPConnect(info base.RTMPConnectInfo)
func (*HTTPNotify) OnServerStart ¶ added in v0.17.0
func (h *HTTPNotify) OnServerStart()
func (*HTTPNotify) OnSubStart ¶ added in v0.17.0
func (h *HTTPNotify) OnSubStart(info base.SubStartInfo)
func (*HTTPNotify) OnSubStop ¶ added in v0.17.0
func (h *HTTPNotify) OnSubStop(info base.SubStopInfo)
func (*HTTPNotify) OnUpdate ¶ added in v0.17.0
func (h *HTTPNotify) OnUpdate(info base.UpdateInfo)
func (*HTTPNotify) RunLoop ¶ added in v0.17.0
func (h *HTTPNotify) RunLoop()
type HTTPNotifyConfig ¶ added in v0.17.0
type HTTPNotifyConfig struct { Enable bool `json:"enable"` UpdateIntervalSec int `json:"update_interval_sec"` OnServerStart string `json:"on_server_start"` OnUpdate string `json:"on_update"` OnPubStart string `json:"on_pub_start"` OnPubStop string `json:"on_pub_stop"` OnSubStart string `json:"on_sub_start"` OnSubStop string `json:"on_sub_stop"` OnRTMPConnect string `json:"on_rtmp_connect"` }
type HTTPTSConfig ¶ added in v0.15.0
type LazyChunkDivider ¶ added in v0.7.0
type LazyChunkDivider struct {
// contains filtered or unexported fields
}
考虑以下两种场景: - 只有上行,没有下行,没有必要做rtmp chunk切片的操作 - 有多个下行,只需要做一次rtmp chunk切片 所以这一步做了懒处理
func (*LazyChunkDivider) Get ¶ added in v0.7.0
func (lcd *LazyChunkDivider) Get() []byte
func (*LazyChunkDivider) Init ¶ added in v0.7.0
func (lcd *LazyChunkDivider) Init(message []byte, header *base.RTMPHeader)
type LazyRTMPMsg2FLVTag ¶ added in v0.8.0
type LazyRTMPMsg2FLVTag struct {
// contains filtered or unexported fields
}
懒转换
func (*LazyRTMPMsg2FLVTag) Get ¶ added in v0.8.0
func (l *LazyRTMPMsg2FLVTag) Get() []byte
func (*LazyRTMPMsg2FLVTag) Init ¶ added in v0.8.0
func (l *LazyRTMPMsg2FLVTag) Init(msg base.RTMPMsg)
type PProfConfig ¶ added in v0.10.0
type RTMPConfig ¶ added in v0.10.0
type RTSPConfig ¶ added in v0.14.0
type RelayPullConfig ¶ added in v0.12.0
type RelayPushConfig ¶ added in v0.11.0
type ServerManager ¶
type ServerManager struct {
// contains filtered or unexported fields
}
func NewServerManager ¶
func NewServerManager() *ServerManager
func (*ServerManager) Dispose ¶
func (sm *ServerManager) Dispose()
func (*ServerManager) GetGroup ¶ added in v0.17.0
func (sm *ServerManager) GetGroup(appName string, streamName string) *Group
func (*ServerManager) OnCtrlKickOutSession ¶ added in v0.17.0
func (sm *ServerManager) OnCtrlKickOutSession(info base.APICtrlKickOutSession) base.HTTPResponseBasic
HTTPAPIServerObserver
func (*ServerManager) OnCtrlStartPull ¶ added in v0.17.0
func (sm *ServerManager) OnCtrlStartPull(info base.APICtrlStartPullReq)
HTTPAPIServerObserver
func (*ServerManager) OnDelHTTPFLVSubSession ¶ added in v0.13.0
func (sm *ServerManager) OnDelHTTPFLVSubSession(session *httpflv.SubSession)
ServerObserver of httpflv.Server
func (*ServerManager) OnDelHTTPTSSubSession ¶ added in v0.15.0
func (sm *ServerManager) OnDelHTTPTSSubSession(session *httpts.SubSession)
ServerObserver of httpts.Server
func (*ServerManager) OnDelRTMPPubSession ¶ added in v0.13.0
func (sm *ServerManager) OnDelRTMPPubSession(session *rtmp.ServerSession)
ServerObserver of rtmp.Server
func (*ServerManager) OnDelRTMPSubSession ¶ added in v0.13.0
func (sm *ServerManager) OnDelRTMPSubSession(session *rtmp.ServerSession)
ServerObserver of rtmp.Server
func (*ServerManager) OnDelRTSPPubSession ¶ added in v0.14.0
func (sm *ServerManager) OnDelRTSPPubSession(session *rtsp.PubSession)
ServerObserver of rtsp.Server
func (*ServerManager) OnDelRTSPSession ¶ added in v0.18.0
func (sm *ServerManager) OnDelRTSPSession(session *rtsp.ServerCommandSession)
ServerObserver of rtsp.Server
func (*ServerManager) OnDelRTSPSubSession ¶ added in v0.17.0
func (sm *ServerManager) OnDelRTSPSubSession(session *rtsp.SubSession)
ServerObserver of rtsp.Server
func (*ServerManager) OnNewHTTPFLVSubSession ¶ added in v0.13.0
func (sm *ServerManager) OnNewHTTPFLVSubSession(session *httpflv.SubSession) bool
ServerObserver of httpflv.Server
func (*ServerManager) OnNewHTTPTSSubSession ¶ added in v0.15.0
func (sm *ServerManager) OnNewHTTPTSSubSession(session *httpts.SubSession) bool
ServerObserver of httpts.Server
func (*ServerManager) OnNewRTMPPubSession ¶ added in v0.13.0
func (sm *ServerManager) OnNewRTMPPubSession(session *rtmp.ServerSession) bool
ServerObserver of rtmp.Server
func (*ServerManager) OnNewRTMPSubSession ¶ added in v0.13.0
func (sm *ServerManager) OnNewRTMPSubSession(session *rtmp.ServerSession) bool
ServerObserver of rtmp.Server
func (*ServerManager) OnNewRTSPPubSession ¶ added in v0.14.0
func (sm *ServerManager) OnNewRTSPPubSession(session *rtsp.PubSession) bool
ServerObserver of rtsp.Server
func (*ServerManager) OnNewRTSPSessionConnect ¶ added in v0.18.0
func (sm *ServerManager) OnNewRTSPSessionConnect(session *rtsp.ServerCommandSession)
ServerObserver of rtsp.Server
func (*ServerManager) OnNewRTSPSubSessionDescribe ¶ added in v0.18.0
func (sm *ServerManager) OnNewRTSPSubSessionDescribe(session *rtsp.SubSession) (ok bool, sdp []byte)
ServerObserver of rtsp.Server
func (*ServerManager) OnNewRTSPSubSessionPlay ¶ added in v0.18.0
func (sm *ServerManager) OnNewRTSPSubSessionPlay(session *rtsp.SubSession) bool
ServerObserver of rtsp.Server
func (*ServerManager) OnRTMPConnect ¶ added in v0.17.0
func (sm *ServerManager) OnRTMPConnect(session *rtmp.ServerSession, opa rtmp.ObjectPairArray)
ServerObserver of rtmp.Server
func (*ServerManager) OnStatAllGroup ¶ added in v0.16.0
func (sm *ServerManager) OnStatAllGroup() (sgs []base.StatGroup)
HTTPAPIServerObserver
func (*ServerManager) OnStatGroup ¶ added in v0.16.0
func (sm *ServerManager) OnStatGroup(streamName string) *base.StatGroup
HTTPAPIServerObserver
func (*ServerManager) RunLoop ¶
func (sm *ServerManager) RunLoop()