Files
lkm/rtmp/rtmp_sink.go
2025-04-08 09:23:18 +08:00

35 lines
879 B
Go

package rtmp
import (
"github.com/lkmio/avformat/utils"
"github.com/lkmio/lkm/stream"
"github.com/lkmio/rtmp"
"net"
)
type Sink struct {
stream.BaseSink
stack *rtmp.ServerStack
}
func (s *Sink) StartStreaming(_ stream.TransStream) error {
return s.stack.SendStreamBeginChunk(s.Conn)
}
func (s *Sink) StopStreaming(stream stream.TransStream) {
_ = s.stack.SendStreamEOFChunk(s.Conn)
s.BaseSink.StopStreaming(stream)
}
func (s *Sink) Close() {
s.BaseSink.Close()
s.stack = nil
}
func NewSink(id stream.SinkID, sourceId string, conn net.Conn, stack *rtmp.ServerStack) stream.Sink {
return &Sink{
BaseSink: stream.BaseSink{ID: id, SourceID: sourceId, State: stream.SessionStateCreated, Protocol: stream.TransStreamRtmp, Conn: conn, DesiredAudioCodecId_: utils.AVCodecIdNONE, DesiredVideoCodecId_: utils.AVCodecIdNONE, TCPStreaming: true},
stack: stack,
}
}