mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-12-24 13:48:04 +08:00
fix: support rtsps
This commit is contained in:
@@ -118,6 +118,9 @@ rtsp:
|
||||
# pull:
|
||||
# live/test: rtsp://admin:1qaz2wsx3EDC@58.212.158.30/Streaming/Channels/101
|
||||
# live/test: rtsp://admin:1qaz2wsx3EDC@localhost:8554/live/test
|
||||
tcp:
|
||||
listenaddr: :554
|
||||
listenaddrtls: :322
|
||||
# webrtc:
|
||||
# publish:
|
||||
# pubaudio: false
|
||||
|
||||
@@ -27,7 +27,6 @@ func GetTLSConfig(certFile, keyFile string) (tslConfig *tls.Config, err error) {
|
||||
if err == nil {
|
||||
tslConfig = &tls.Config{
|
||||
Certificates: []tls.Certificate{keyPair},
|
||||
NextProtos: []string{"monibuca"},
|
||||
}
|
||||
}
|
||||
return
|
||||
@@ -60,7 +59,7 @@ func (config *TCP) CreateTCPTLSWork(logger *slog.Logger, handler TCPHandler) *Li
|
||||
return ret
|
||||
}
|
||||
|
||||
type TCPHandler = func(conn *net.TCPConn) task.ITask
|
||||
type TCPHandler = func(conn net.Conn) task.ITask
|
||||
|
||||
type ListenTCPWork struct {
|
||||
task.Work
|
||||
@@ -109,6 +108,17 @@ func (task *ListenTCPTLSWork) Start() (err error) {
|
||||
task.Info("listen tcp tls")
|
||||
} else {
|
||||
task.Error("failed to listen tcp tls", "error", err)
|
||||
return
|
||||
}
|
||||
if task.handler == nil {
|
||||
return nil
|
||||
}
|
||||
count := task.ListenNum
|
||||
if count == 0 {
|
||||
count = runtime.NumCPU()
|
||||
}
|
||||
for range count {
|
||||
go task.listen(task.handler)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -156,7 +166,7 @@ func (task *ListenTCPWork) listen(handler TCPHandler) {
|
||||
}
|
||||
}
|
||||
tempDelay = 0
|
||||
subTask := handler(tcpConn)
|
||||
subTask := handler(conn)
|
||||
task.AddTask(subTask)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ type (
|
||||
}
|
||||
|
||||
ITCPPlugin interface {
|
||||
OnTCPConnect(conn *net.TCPConn) task.ITask
|
||||
OnTCPConnect(conn net.Conn) task.ITask
|
||||
}
|
||||
|
||||
IUDPPlugin interface {
|
||||
|
||||
@@ -34,7 +34,7 @@ import (
|
||||
|
||||
type SipConfig struct {
|
||||
ListenAddr []string
|
||||
ListenTLSAddr []string
|
||||
ListenAddrTLS []string
|
||||
CertFile string `desc:"证书文件"`
|
||||
KeyFile string `desc:"私钥文件"`
|
||||
}
|
||||
@@ -242,9 +242,9 @@ func (gb *GB28181Plugin) Start() (err error) {
|
||||
}
|
||||
go gb.server.ListenAndServe(gb, netWork, addr)
|
||||
}
|
||||
if len(gb.Sip.ListenTLSAddr) > 0 {
|
||||
if len(gb.Sip.ListenAddrTLS) > 0 {
|
||||
if tslConfig, err := config.GetTLSConfig(gb.Sip.CertFile, gb.Sip.KeyFile); err == nil {
|
||||
for _, addr := range gb.Sip.ListenTLSAddr {
|
||||
for _, addr := range gb.Sip.ListenAddrTLS {
|
||||
netWork, addr, _ := strings.Cut(addr, ":")
|
||||
gb.SetDescription(netWork+"TLS", strings.TrimPrefix(addr, ":"))
|
||||
if port, err := strconv.Atoi(strings.TrimPrefix(addr, ":")); err == nil {
|
||||
|
||||
@@ -37,7 +37,7 @@ type RTMPServer struct {
|
||||
conf *RTMPPlugin
|
||||
}
|
||||
|
||||
func (p *RTMPPlugin) OnTCPConnect(conn *net.TCPConn) task.ITask {
|
||||
func (p *RTMPPlugin) OnTCPConnect(conn net.Conn) task.ITask {
|
||||
ret := &RTMPServer{conf: p}
|
||||
ret.Init(conn)
|
||||
ret.Logger = p.Logger.With("remote", conn.RemoteAddr().String())
|
||||
|
||||
@@ -29,7 +29,7 @@ type RTSPPlugin struct {
|
||||
udpPorts chan uint16
|
||||
}
|
||||
|
||||
func (p *RTSPPlugin) OnTCPConnect(conn *net.TCPConn) task.ITask {
|
||||
func (p *RTSPPlugin) OnTCPConnect(conn net.Conn) task.ITask {
|
||||
ret := &RTSPServer{NetConnection: NewNetConnection(conn), conf: p}
|
||||
ret.Logger = p.Logger.With("remote", conn.RemoteAddr().String())
|
||||
return ret
|
||||
|
||||
Reference in New Issue
Block a user