diff --git a/pkg/core/core.go b/pkg/core/core.go index f123588f..e663ac75 100644 --- a/pkg/core/core.go +++ b/pkg/core/core.go @@ -90,6 +90,7 @@ type Info struct { URL string `json:"url,omitempty"` RemoteAddr string `json:"remote_addr,omitempty"` UserAgent string `json:"user_agent,omitempty"` + SDP string `json:"sdp,omitempty"` Medias []*Media `json:"medias,omitempty"` Receivers []*Receiver `json:"receivers,omitempty"` Senders []*Sender `json:"senders,omitempty"` diff --git a/pkg/rtsp/client.go b/pkg/rtsp/client.go index d4deafd0..3472be67 100644 --- a/pkg/rtsp/client.go +++ b/pkg/rtsp/client.go @@ -4,7 +4,6 @@ import ( "bufio" "errors" "fmt" - "github.com/AlexxIT/go2rtc/pkg/tcp/websocket" "net" "net/http" "net/url" @@ -12,6 +11,8 @@ import ( "strings" "time" + "github.com/AlexxIT/go2rtc/pkg/tcp/websocket" + "github.com/AlexxIT/go2rtc/pkg/core" "github.com/AlexxIT/go2rtc/pkg/tcp" ) @@ -139,6 +140,8 @@ func (c *Conn) Describe() error { } } + c.sdp = string(res.Body) // for info + medias, err := UnmarshalSDP(res.Body) if err != nil { return err diff --git a/pkg/rtsp/conn.go b/pkg/rtsp/conn.go index 9b23087a..44ef9aa7 100644 --- a/pkg/rtsp/conn.go +++ b/pkg/rtsp/conn.go @@ -4,16 +4,17 @@ import ( "bufio" "encoding/binary" "fmt" - "github.com/AlexxIT/go2rtc/pkg/core" - "github.com/AlexxIT/go2rtc/pkg/tcp" - "github.com/pion/rtcp" - "github.com/pion/rtp" "io" "net" "net/url" "strconv" "sync" "time" + + "github.com/AlexxIT/go2rtc/pkg/core" + "github.com/AlexxIT/go2rtc/pkg/tcp" + "github.com/pion/rtcp" + "github.com/pion/rtp" ) type Conn struct { @@ -39,6 +40,7 @@ type Conn struct { reader *bufio.Reader sequence int session string + sdp string uri string state State diff --git a/pkg/rtsp/producer.go b/pkg/rtsp/producer.go index 764fb6ef..d0f36a1c 100644 --- a/pkg/rtsp/producer.go +++ b/pkg/rtsp/producer.go @@ -3,6 +3,7 @@ package rtsp import ( "encoding/json" "errors" + "github.com/AlexxIT/go2rtc/pkg/core" ) @@ -100,6 +101,7 @@ func (c *Conn) Stop() (err error) { func (c *Conn) MarshalJSON() ([]byte, error) { info := &core.Info{ Type: "RTSP " + c.mode.String(), + SDP: c.sdp, UserAgent: c.UserAgent, Medias: c.Medias, Receivers: c.receivers, diff --git a/pkg/rtsp/server.go b/pkg/rtsp/server.go index 74aefe37..5c69fb68 100644 --- a/pkg/rtsp/server.go +++ b/pkg/rtsp/server.go @@ -4,12 +4,13 @@ import ( "bufio" "errors" "fmt" - "github.com/AlexxIT/go2rtc/pkg/core" - "github.com/AlexxIT/go2rtc/pkg/tcp" "net" "net/url" "strconv" "strings" + + "github.com/AlexxIT/go2rtc/pkg/core" + "github.com/AlexxIT/go2rtc/pkg/tcp" ) func NewServer(conn net.Conn) *Conn { @@ -69,6 +70,8 @@ func (c *Conn) Accept() error { return errors.New("wrong content type") } + c.sdp = string(req.Body) // for info + c.Medias, err = UnmarshalSDP(req.Body) if err != nil { return err @@ -125,6 +128,8 @@ func (c *Conn) Accept() error { return err } + c.sdp = string(res.Body) // for info + if err = c.WriteResponse(res); err != nil { return err }