diff --git a/internal/rtsp/rtsp.go b/internal/rtsp/rtsp.go index 14372200..10023a41 100644 --- a/internal/rtsp/rtsp.go +++ b/internal/rtsp/rtsp.go @@ -101,6 +101,7 @@ func rtspHandler(rawURL string) (core.Producer, error) { if rawQuery != "" { query := streams.ParseQuery(rawQuery) conn.Backchannel = query.Get("backchannel") == "1" + conn.Media = query.Get("media") conn.Transport = query.Get("transport") } diff --git a/pkg/rtsp/client.go b/pkg/rtsp/client.go index b3df3521..3a076444 100644 --- a/pkg/rtsp/client.go +++ b/pkg/rtsp/client.go @@ -147,6 +147,16 @@ func (c *Conn) Describe() error { return err } + if c.Media != "" { + clone := make([]*core.Media, 0, len(medias)) + for _, media := range medias { + if strings.Contains(c.Media, media.Kind) { + clone = append(clone, media) + } + } + medias = clone + } + // TODO: rewrite more smart if c.Medias == nil { c.Medias = medias diff --git a/pkg/rtsp/conn.go b/pkg/rtsp/conn.go index 44ef9aa7..c68a2675 100644 --- a/pkg/rtsp/conn.go +++ b/pkg/rtsp/conn.go @@ -23,6 +23,7 @@ type Conn struct { // public Backchannel bool + Media string PacketSize uint16 SessionName string Transport string // custom transport support, ex. RTSP over WebSocket