mirror of
https://github.com/Monibuca/plugin-rtmp.git
synced 2025-10-05 15:37:11 +08:00
增加一个保持连接开关,默认关闭
This commit is contained in:
@@ -62,6 +62,7 @@ rtmp:
|
|||||||
repush: 0 # 当断开后是否自动重新推流,0代表不进行重新推流,-1代表无限次重新推流
|
repush: 0 # 当断开后是否自动重新推流,0代表不进行重新推流,-1代表无限次重新推流
|
||||||
pushlist: {} # 推流列表,以 streamPath为key,远程地址为value
|
pushlist: {} # 推流列表,以 streamPath为key,远程地址为value
|
||||||
chunksize: 4096
|
chunksize: 4096
|
||||||
|
keepalive: false #保持rtmp连接,默认随着stream的close而主动断开
|
||||||
```
|
```
|
||||||
:::tip 配置覆盖
|
:::tip 配置覆盖
|
||||||
publish
|
publish
|
||||||
|
2
main.go
2
main.go
@@ -15,6 +15,7 @@ type RTMPConfig struct {
|
|||||||
config.Pull
|
config.Pull
|
||||||
config.Push
|
config.Push
|
||||||
ChunkSize int
|
ChunkSize int
|
||||||
|
KeepAlive bool //保持rtmp连接,默认随着stream的close而主动断开
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RTMPConfig) OnEvent(event any) {
|
func (c *RTMPConfig) OnEvent(event any) {
|
||||||
@@ -59,6 +60,7 @@ func (c *RTMPConfig) OnEvent(event any) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var conf = &RTMPConfig{
|
var conf = &RTMPConfig{
|
||||||
ChunkSize: 4096,
|
ChunkSize: 4096,
|
||||||
TCP: config.TCP{ListenAddr: ":1935"},
|
TCP: config.TCP{ListenAddr: ":1935"},
|
||||||
|
@@ -130,6 +130,9 @@ func (config *RTMPConfig) ServeTCP(conn *net.TCPConn) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
receiver.SetParentCtx(ctx)
|
receiver.SetParentCtx(ctx)
|
||||||
|
if !config.KeepAlive {
|
||||||
|
receiver.SetIO(conn)
|
||||||
|
}
|
||||||
if plugin.Publish(nc.appName+"/"+cmd.PublishingName, receiver) == nil {
|
if plugin.Publish(nc.appName+"/"+cmd.PublishingName, receiver) == nil {
|
||||||
receivers[cmd.StreamId] = receiver
|
receivers[cmd.StreamId] = receiver
|
||||||
receiver.absTs = make(map[uint32]uint32)
|
receiver.absTs = make(map[uint32]uint32)
|
||||||
@@ -146,6 +149,9 @@ func (config *RTMPConfig) ServeTCP(conn *net.TCPConn) {
|
|||||||
cmd.StreamId,
|
cmd.StreamId,
|
||||||
}
|
}
|
||||||
sender.SetParentCtx(ctx)
|
sender.SetParentCtx(ctx)
|
||||||
|
if !config.KeepAlive {
|
||||||
|
sender.SetIO(conn)
|
||||||
|
}
|
||||||
sender.ID = fmt.Sprintf("%s|%d", conn.RemoteAddr().String(), sender.StreamID)
|
sender.ID = fmt.Sprintf("%s|%d", conn.RemoteAddr().String(), sender.StreamID)
|
||||||
if plugin.Subscribe(streamPath, sender) != nil {
|
if plugin.Subscribe(streamPath, sender) != nil {
|
||||||
sender.Response(cmd.TransactionId, NetStream_Play_Failed, Level_Error)
|
sender.Response(cmd.TransactionId, NetStream_Play_Failed, Level_Error)
|
||||||
|
Reference in New Issue
Block a user