From 762edf157a21a3a62f24aebd0d67bc6a0d73ab9a Mon Sep 17 00:00:00 2001 From: Alexey Khit Date: Tue, 31 Jan 2023 07:32:43 +0300 Subject: [PATCH] Add default_query setting for RTSP server --- cmd/rtsp/rtsp.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/cmd/rtsp/rtsp.go b/cmd/rtsp/rtsp.go index 21143d09..e61809a8 100644 --- a/cmd/rtsp/rtsp.go +++ b/cmd/rtsp/rtsp.go @@ -9,20 +9,23 @@ import ( "github.com/AlexxIT/go2rtc/pkg/tcp" "github.com/rs/zerolog" "net" + "net/url" "strings" ) func Init() { var conf struct { Mod struct { - Listen string `yaml:"listen" json:"listen"` - Username string `yaml:"username" json:"-"` - Password string `yaml:"password" json:"-"` + Listen string `yaml:"listen" json:"listen"` + Username string `yaml:"username" json:"-"` + Password string `yaml:"password" json:"-"` + DefaultQuery string `yaml:"default_query"` } `yaml:"rtsp"` } // default config conf.Mod.Listen = ":8554" + conf.Mod.DefaultQuery = "video&audio" app.LoadConfig(&conf) app.Info["rtsp"] = conf.Mod @@ -50,6 +53,10 @@ func Init() { log.Info().Str("addr", address).Msg("[rtsp] listen") + if query, err := url.ParseQuery(conf.Mod.DefaultQuery); err == nil { + defaultMedias = mp4.ParseQuery(query) + } + go func() { for { conn, err := ln.Accept() @@ -79,6 +86,7 @@ var Port string var log zerolog.Logger var handlers []Handler +var defaultMedias []*streamer.Media func rtspHandler(url string) (streamer.Producer, error) { backchannel := true @@ -166,6 +174,9 @@ func tcpHandler(conn *rtsp.Conn) { conn.SessionName = app.UserAgent conn.Medias = mp4.ParseQuery(conn.URL.Query()) + if conn.Medias == nil { + conn.Medias = defaultMedias + } if err := stream.AddConsumer(conn); err != nil { log.Warn().Err(err).Str("stream", name).Msg("[rtsp]")