fix: support rtsps

This commit is contained in:
langhuihui
2025-12-24 10:08:48 +08:00
parent 5d42061e56
commit f702f60102
6 changed files with 22 additions and 9 deletions

View File

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

View File

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

View File

@@ -79,7 +79,7 @@ type (
}
ITCPPlugin interface {
OnTCPConnect(conn *net.TCPConn) task.ITask
OnTCPConnect(conn net.Conn) task.ITask
}
IUDPPlugin interface {

View File

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

View File

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

View File

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