mirror of
https://github.com/H0RlZ0N/gortmppush
synced 2026-04-22 22:57:10 +08:00
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package gortmppush
|
|
|
|
import (
|
|
"github.com/H0RlZ0N/gortmppush/av"
|
|
"github.com/H0RlZ0N/gortmppush/container/flv"
|
|
"github.com/H0RlZ0N/gortmppush/logger"
|
|
"github.com/H0RlZ0N/gortmppush/protocol"
|
|
)
|
|
|
|
// RtmpAPI api接口类
|
|
type RtmpAPI struct {
|
|
setting *SettingEngine
|
|
logger logger.Logger
|
|
}
|
|
|
|
// NewAPI 创建一个api,设置相应的参数信息
|
|
func NewAPI(opts ...SettingFunc) *RtmpAPI {
|
|
api := &RtmpAPI{}
|
|
|
|
setting := &SettingEngine{}
|
|
for _, v := range opts {
|
|
v(setting)
|
|
}
|
|
|
|
if setting.loggerFactory == nil {
|
|
setting.loggerFactory = logger.NewDefaultFactory()
|
|
}
|
|
|
|
if setting.logLevel == logger.LogLevelDisabled {
|
|
setting.logLevel = logger.LogLevelInfo
|
|
}
|
|
api.logger = setting.loggerFactory.NewLogger(setting.logLevel)
|
|
api.setting = setting
|
|
return api
|
|
}
|
|
|
|
// ServeRtmp 创建一个rtmp服务,并监听响应的地址
|
|
func (api *RtmpAPI) ServeRtmp(addr string) error {
|
|
server := &Server{
|
|
handler: protocol.NewStreamHandler(api.logger),
|
|
logger: api.logger,
|
|
}
|
|
return server.Serve(addr)
|
|
}
|
|
|
|
// ServeRtmpTLS 创建一个rtmp服务,并监听响应的地址
|
|
func (api *RtmpAPI) ServeRtmpTLS(addr, tlsKey, tlsCrt string) error {
|
|
server := &Server{
|
|
handler: protocol.NewStreamHandler(api.logger),
|
|
logger: api.logger,
|
|
}
|
|
return server.ServeTLS(addr, tlsKey, tlsCrt)
|
|
}
|
|
|
|
// NewRtmpClient 创建一个rtmp客户端
|
|
func (api *RtmpAPI) NewRtmpClient() *RtmpClient {
|
|
client := &RtmpClient{
|
|
packetChan: make(chan *av.Packet, 16),
|
|
videoFirst: true,
|
|
audioFirst: true,
|
|
demuxer: flv.NewDemuxer(),
|
|
logger: api.logger,
|
|
}
|
|
return client
|
|
}
|