From cbe785dedaaedf92140e0160a8ae954aad5dfaa1 Mon Sep 17 00:00:00 2001 From: dexter <178529795@qq.com> Date: Thu, 26 May 2022 20:36:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E4=BF=9D?= =?UTF-8?q?=E6=8C=81=E8=BF=9E=E6=8E=A5=E5=BC=80=E5=85=B3=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + main.go | 2 ++ server.go | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/README.md b/README.md index 6f174ce..fdcc873 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ rtmp: repush: 0 # 当断开后是否自动重新推流,0代表不进行重新推流,-1代表无限次重新推流 pushlist: {} # 推流列表,以 streamPath为key,远程地址为value chunksize: 4096 + keepalive: false #保持rtmp连接,默认随着stream的close而主动断开 ``` :::tip 配置覆盖 publish diff --git a/main.go b/main.go index bce826f..bfb0ab0 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ type RTMPConfig struct { config.Pull config.Push ChunkSize int + KeepAlive bool //保持rtmp连接,默认随着stream的close而主动断开 } func (c *RTMPConfig) OnEvent(event any) { @@ -59,6 +60,7 @@ func (c *RTMPConfig) OnEvent(event any) { } } } + var conf = &RTMPConfig{ ChunkSize: 4096, TCP: config.TCP{ListenAddr: ":1935"}, diff --git a/server.go b/server.go index f4fd024..f7edce3 100644 --- a/server.go +++ b/server.go @@ -130,6 +130,9 @@ func (config *RTMPConfig) ServeTCP(conn *net.TCPConn) { }, } receiver.SetParentCtx(ctx) + if !config.KeepAlive { + receiver.SetIO(conn) + } if plugin.Publish(nc.appName+"/"+cmd.PublishingName, receiver) == nil { receivers[cmd.StreamId] = receiver receiver.absTs = make(map[uint32]uint32) @@ -146,6 +149,9 @@ func (config *RTMPConfig) ServeTCP(conn *net.TCPConn) { cmd.StreamId, } sender.SetParentCtx(ctx) + if !config.KeepAlive { + sender.SetIO(conn) + } sender.ID = fmt.Sprintf("%s|%d", conn.RemoteAddr().String(), sender.StreamID) if plugin.Subscribe(streamPath, sender) != nil { sender.Response(cmd.TransactionId, NetStream_Play_Failed, Level_Error)