diff --git a/internal/controllers/srt_controller.go b/internal/controllers/srt_controller.go index e95696d..33898de 100644 --- a/internal/controllers/srt_controller.go +++ b/internal/controllers/srt_controller.go @@ -1,8 +1,11 @@ package controllers import ( + "context" + astisrt "github.com/asticode/go-astisrt/pkg" "github.com/flavioribeiro/donut/internal/entities" + "go.uber.org/fx" "go.uber.org/zap" ) @@ -11,11 +14,41 @@ type SRTController struct { l *zap.Logger } -func NewSRTController(c *entities.Config, l *zap.Logger) *SRTController { +func NewSRTController(c *entities.Config, l *zap.Logger, lc fx.Lifecycle) (*SRTController, error) { + // Handle logs + astisrt.SetLogLevel(astisrt.LogLevel(astisrt.LogLevelError)) + astisrt.SetLogHandler(func(ll astisrt.LogLevel, file, area, msg string, line int) { + l.Sugar().Infow("SRT", + "ll", ll, + "msg", msg, + ) + }) + + // Startup srt + if err := astisrt.Startup(); err != nil { + l.Sugar().Errorw("failed to start up srt", + "error", err, + ) + return nil, err + } + + lc.Append(fx.Hook{ + OnStop: func(ctx context.Context) error { + // Clean up + if err := astisrt.CleanUp(); err != nil { + l.Sugar().Errorw("failed to clean up srt", + "error", err, + ) + return err + } + return nil + }, + }) + return &SRTController{ c: c, l: l, - } + }, nil } func (c *SRTController) Connect(params *entities.RequestParams) (*astisrt.Connection, error) { @@ -36,6 +69,8 @@ func (c *SRTController) Connect(params *entities.RequestParams) (*astisrt.Connec ConnectionOptions: []astisrt.ConnectionOption{ astisrt.WithLatency(c.c.SRTConnectionLatencyMS), astisrt.WithStreamid(params.SRTStreamID), + astisrt.WithCongestion("live"), + astisrt.WithTranstype(astisrt.Transtype(astisrt.TranstypeLive)), }, OnDisconnect: func(conn *astisrt.Connection, err error) { @@ -48,7 +83,7 @@ func (c *SRTController) Connect(params *entities.RequestParams) (*astisrt.Connec Port: params.SRTPort, }) if err != nil { - c.l.Sugar().Infow("failed to connect srt", + c.l.Sugar().Errorw("failed to connect srt", "error", err, ) return nil, err diff --git a/scripts/srt.sh b/scripts/srt.sh index 028cb61..638e375 100755 --- a/scripts/srt.sh +++ b/scripts/srt.sh @@ -1,4 +1,4 @@ # ref https://github.com/Haivision/srt/blob/master/docs/apps/srt-live-transmit.md srt-live-transmit \ "udp://${SRT_UDP_TS_INPUT_HOST}:${SRT_UDP_TS_INPUT_PORT}" \ - "srt://:${SRT_LISTENING_PORT}?congestion=live&transtype=live&groupconnect=1" -v \ No newline at end of file + "srt://:${SRT_LISTENING_PORT}?congestion=live&transtype=live" -v \ No newline at end of file