diff --git a/pkg/media/media.go b/pkg/media/media.go index 6e5f0190..6a0e9bb1 100644 --- a/pkg/media/media.go +++ b/pkg/media/media.go @@ -167,7 +167,8 @@ func (m Media) URL(contentBase *url.URL) (*url.URL, error) { } // control attribute contains an absolute path - if strings.HasPrefix(m.Control, "rtsp://") { + if strings.HasPrefix(m.Control, "rtsp://") || + strings.HasPrefix(m.Control, "rtsps://") { ur, err := url.Parse(m.Control) if err != nil { return nil, err diff --git a/pkg/media/media_test.go b/pkg/media/media_test.go index 1c084bf6..46ef91f3 100644 --- a/pkg/media/media_test.go +++ b/pkg/media/media_test.go @@ -39,9 +39,18 @@ func TestMediaURL(t *testing.T) { "m=video 0 RTP/AVP 96\r\n" + "a=rtpmap:96 H264/90000\r\n" + "a=control:rtsp://localhost/path/trackID=7"), - mustParseURL("rtsp://myuser:mypass@192.168.1.99:554/path/"), + mustParseURL("rtsp://myuser:mypass@192.168.1.99:554/"), mustParseURL("rtsp://myuser:mypass@192.168.1.99:554/path/trackID=7"), }, + { + "absolute control rtsps", + []byte("v=0\r\n" + + "m=video 0 RTP/AVP 96\r\n" + + "a=rtpmap:96 H264/90000\r\n" + + "a=control:rtsps://localhost/path/trackID=7"), + mustParseURL("rtsps://myuser:mypass@192.168.1.99:554/"), + mustParseURL("rtsps://myuser:mypass@192.168.1.99:554/path/trackID=7"), + }, { "relative control", []byte("v=0\r\n" +