diff --git a/conf/lalserver.conf.json b/conf/lalserver.conf.json index f8d3e34..8f01670 100644 --- a/conf/lalserver.conf.json +++ b/conf/lalserver.conf.json @@ -3,15 +3,18 @@ "conf_version": "v0.3.3", "rtmp": { "enable": true, - "enable_rtmps": true, - "rtmps_cert_file": "./conf/cert.pem", - "rtmps_key_file": "./conf/key.pem", "addr": ":1935", "gop_num": 0, "merge_write_size": 0, "add_dummy_audio_enable": false, "add_dummy_audio_wait_audio_ms": 150 }, + "rtmps": { + "enable": true, + "addr": ":4935", + "cert_file": "./conf/cert.pem", + "key_file": "./conf/key.pem" + }, "default_http": { "http_listen_addr": ":8080", "https_listen_addr": ":4433", diff --git a/pkg/logic/config.go b/pkg/logic/config.go index aab61e2..c775240 100644 --- a/pkg/logic/config.go +++ b/pkg/logic/config.go @@ -32,6 +32,7 @@ const ( type Config struct { ConfVersion string `json:"conf_version"` RtmpConfig RtmpConfig `json:"rtmp"` + RtmpsConfig RtmpsConfig `json:"rtmps"` DefaultHttpConfig DefaultHttpConfig `json:"default_http"` HttpflvConfig HttpflvConfig `json:"httpflv"` HlsConfig HlsConfig `json:"hls"` @@ -52,16 +53,20 @@ type Config struct { type RtmpConfig struct { Enable bool `json:"enable"` - EnableRtmps bool `json:"enable_rtmps"` Addr string `json:"addr"` - RtmpsCertFile string `json:"rtmps_cert_file"` - RtmpsKeyFile string `json:"rtmps_key_file"` GopNum int `json:"gop_num"` // TODO(chef): refactor 更名为gop_cache_num MergeWriteSize int `json:"merge_write_size"` AddDummyAudioEnable bool `json:"add_dummy_audio_enable"` AddDummyAudioWaitAudioMs int `json:"add_dummy_audio_wait_audio_ms"` } +type RtmpsConfig struct { + Enable bool `json:"enable"` + Addr string `json:"addr"` + CertFile string `json:"cert_file"` + KeyFile string `json:"key_file"` +} + type DefaultHttpConfig struct { CommonHttpAddrConfig } diff --git a/pkg/logic/group__core_streaming.go b/pkg/logic/group__core_streaming.go index 4fb64fa..5a17493 100644 --- a/pkg/logic/group__core_streaming.go +++ b/pkg/logic/group__core_streaming.go @@ -9,9 +9,10 @@ package logic import ( + "net" + "github.com/q191201771/lal/pkg/rtmp" "github.com/q191201771/naza/pkg/nazalog" - "net" "github.com/q191201771/lal/pkg/mpegts" @@ -370,7 +371,7 @@ func (group *Group) broadcastByRtmpMsg(msg base.RtmpMsg) { } // # 缓存关键信息,以及gop - if group.config.RtmpConfig.Enable { + if group.config.RtmpConfig.Enable || group.config.RtmpsConfig.Enable { group.rtmpGopCache.Feed(msg, lazyRtmpChunkDivider.GetEnsureWithoutSdf()) if msg.Header.MsgTypeId == base.RtmpTypeIdMetadata { group.rtmpGopCache.SetMetadata(lazyRtmpChunkDivider.GetEnsureWithSdf(), lazyRtmpChunkDivider.GetEnsureWithoutSdf()) diff --git a/pkg/logic/server_manager__.go b/pkg/logic/server_manager__.go index a75cb88..5741cc5 100644 --- a/pkg/logic/server_manager__.go +++ b/pkg/logic/server_manager__.go @@ -46,6 +46,7 @@ type ServerManager struct { hlsServerHandler *hls.ServerHandler rtmpServer *rtmp.Server + rtmpsServer *rtmp.Server rtspServer *rtsp.Server httpApiServer *HttpApiServer pprofServer *http.Server @@ -123,6 +124,9 @@ Doc: %s if sm.config.RtmpConfig.Enable { sm.rtmpServer = rtmp.NewServer(sm.config.RtmpConfig.Addr, sm) } + if sm.config.RtmpsConfig.Enable { + sm.rtmpsServer = rtmp.NewServer(sm.config.RtmpsConfig.Addr, sm) + } if sm.config.RtspConfig.Enable { sm.rtspServer = rtsp.NewServer(sm.config.RtspConfig.Addr, sm, sm.config.RtspConfig.ServerAuthConfig) } @@ -210,14 +214,8 @@ func (sm *ServerManager) RunLoop() error { } if sm.rtmpServer != nil { - if sm.config.RtmpConfig.EnableRtmps { - if err := sm.rtmpServer.ListenWithTLS(sm.config.RtmpConfig.RtmpsCertFile, sm.config.RtmpConfig.RtmpsKeyFile); err != nil { - return err - } - } else { - if err := sm.rtmpServer.Listen(); err != nil { - return err - } + if err := sm.rtmpServer.Listen(); err != nil { + return err } go func() { if err := sm.rtmpServer.RunLoop(); err != nil { @@ -226,6 +224,17 @@ func (sm *ServerManager) RunLoop() error { }() } + if sm.rtmpsServer != nil { + if err := sm.rtmpServer.ListenWithTLS(sm.config.RtmpsConfig.CertFile, sm.config.RtmpsConfig.KeyFile); err != nil { + return err + } + go func() { + if err := sm.rtmpsServer.RunLoop(); err != nil { + Log.Error(err) + } + }() + } + if sm.rtspServer != nil { if err := sm.rtspServer.Listen(); err != nil { return err