兼容Adoble FMLE推流工具

This commit is contained in:
yangjiechina
2024-12-13 19:46:44 +08:00
parent 6f72ccfeba
commit 5d0c51817c
5 changed files with 12 additions and 13 deletions

View File

@@ -16,7 +16,7 @@ type Publisher struct {
}
func (p *Publisher) Input(data []byte) error {
return p.stack.Input(nil, data)
return p.stack.Input(data)
}
func (p *Publisher) OnDeMuxStream(stream utils.AVStream) {

View File

@@ -58,7 +58,7 @@ func (s *server) OnPacket(conn net.Conn, data []byte) []byte {
s.StreamServer.OnPacket(conn, data)
session := conn.(*transport.Conn).Data.(*Session)
err := session.Input(conn, data)
err := session.Input(data)
if err != nil {
log.Sugar.Errorf("处理rtmp包失败 err:%s conn:%s", err.Error(), conn.RemoteAddr().String())

View File

@@ -76,13 +76,12 @@ func (s *Session) OnPlay(app, stream_ string) utils.HookState {
return state
}
func (s *Session) Input(conn net.Conn, data []byte) error {
func (s *Session) Input(data []byte) error {
// 推流会话, 收到的包都将交由主协程处理
if s.isPublisher {
s.handle.(*Publisher).PublishSource.Input(data)
return nil
return s.handle.(*Publisher).PublishSource.Input(data)
} else {
return s.stack.Input(conn, data)
return s.stack.Input(data)
}
}
@@ -121,7 +120,7 @@ func (s *Session) Close() {
func NewSession(conn net.Conn) *Session {
session := &Session{}
stack := librtmp.NewStack(session)
stack := librtmp.NewStack(conn, session)
session.stack = stack
session.conn = conn
return session

View File

@@ -13,11 +13,11 @@ type Sink struct {
}
func (s *Sink) StartStreaming(_ stream.TransStream) error {
return s.stack.SendStreamBeginChunk(s.Conn)
return s.stack.SendStreamBeginChunk()
}
func (s *Sink) StopStreaming(_ stream.TransStream) {
_ = s.stack.SendStreamEOFChunk(s.Conn)
_ = s.stack.SendStreamEOFChunk()
}
func (s *Sink) Close() {

View File

@@ -75,7 +75,7 @@ func (t *transStream) Input(packet utils.AVPacket) ([][]byte, int64, bool, error
// 写chunk header
chunk.Length = payloadSize
chunk.Timestamp = uint32(dts)
n := chunk.ToBytes(allocate)
n := chunk.MarshalHeader(allocate)
// 写flv
if videoPkt {
@@ -84,7 +84,7 @@ func (t *transStream) Input(packet utils.AVPacket) ([][]byte, int64, bool, error
n += t.muxer.WriteAudioData(allocate[n:], false)
}
n += chunk.WriteData(allocate[n:], data, t.chunkSize, chunkPayloadOffset)
n += chunk.WriteBody(allocate[n:], data, t.chunkSize, chunkPayloadOffset)
utils.Assert(len(allocate) == n)
// 合并写满了再发
@@ -157,7 +157,7 @@ func (t *transStream) WriteHeader() error {
n += len(extra)
t.audioChunk.Length = n
t.audioChunk.ToBytes(t.header)
t.audioChunk.MarshalHeader(t.header)
n += 12
}
@@ -169,7 +169,7 @@ func (t *transStream) WriteHeader() error {
n += len(extra)
t.videoChunk.Length = 5 + len(extra)
t.videoChunk.ToBytes(t.header[tmp:])
t.videoChunk.MarshalHeader(t.header[tmp:])
n += 12
}