Add RTMP listen with RTMPS

pull/230/head
Jae-Sung Lee 2 years ago
parent 44370b5f56
commit 03cc3f4896

@ -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",

@ -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
}

@ -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())

@ -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

Loading…
Cancel
Save