fix: rtmp推拉流频繁创建内存问题

This commit is contained in:
ydajiang
2025-06-08 09:42:29 +08:00
parent 3b03420639
commit a7b233681c
2 changed files with 14 additions and 10 deletions

View File

@@ -65,11 +65,7 @@ func (s *server) OnPacket(conn net.Conn, data []byte) []byte {
_ = conn.Close()
}
if session.isPublisher {
return stream.TCPReceiveBufferPool.Get().([]byte)
}
return nil
return session.receiveBuffer
}
func NewServer() Server {

View File

@@ -10,10 +10,11 @@ import (
// Session RTMP会话, 解析处理Message
type Session struct {
conn net.Conn
stack *rtmp.ServerStack // rtmp协议栈, 解析message
handle interface{} // 持有具体会话句柄(推流端/拉流端) 在@see OnPublish @see OnPlay回调中赋值
isPublisher bool // 是否是推流会话
conn net.Conn
stack *rtmp.ServerStack // rtmp协议栈, 解析message
handle interface{} // 持有具体会话句柄(推流端/拉流端) 在@see OnPublish @see OnPlay回调中赋值
isPublisher bool // 是否是推流会话
receiveBuffer []byte
}
func (s *Session) generateSourceID(app, stream string) string {
@@ -95,6 +96,11 @@ func (s *Session) Close() {
s.stack.Close()
s.stack = nil
}
if s.receiveBuffer != nil {
stream.TCPReceiveBufferPool.Put(s.receiveBuffer[:cap(s.receiveBuffer)])
s.receiveBuffer = nil
}
}()
// 还未确定会话类型, 无需处理
@@ -118,7 +124,9 @@ func (s *Session) Close() {
}
func NewSession(conn net.Conn) *Session {
session := &Session{}
session := &Session{
receiveBuffer: stream.TCPReceiveBufferPool.Get().([]byte),
}
stackServer := rtmp.NewStackServer(false)
stackServer.SetOnStreamHandler(session)