mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-09-26 20:31:11 +08:00
feat: accept rtsp client without interleaved parameter
This commit is contained in:

committed by
GitHub

parent
8ecaabfce9
commit
29f7f1a57d
@@ -148,25 +148,30 @@ func (c *Conn) Accept() error {
|
||||
Request: req,
|
||||
}
|
||||
|
||||
const transport = "RTP/AVP/TCP;unicast;interleaved="
|
||||
if tr = core.Between(tr, "interleaved=", ";"); tr != "" {
|
||||
c.session = core.RandString(8, 10)
|
||||
c.state = StateSetup
|
||||
const transport = "RTP/AVP/TCP;unicast"
|
||||
|
||||
if c.mode == core.ModePassiveConsumer {
|
||||
if i := reqTrackID(req); i >= 0 && i < len(c.Senders) {
|
||||
// mark sender as SETUP
|
||||
c.Senders[i].Media.ID = MethodSetup
|
||||
tr = fmt.Sprintf("%d-%d", i*2, i*2+1)
|
||||
res.Header.Set("Transport", transport+tr)
|
||||
c.session = core.RandString(8, 10)
|
||||
c.state = StateSetup
|
||||
|
||||
if c.mode == core.ModePassiveConsumer {
|
||||
if i := reqTrackID(req); i >= 0 && i < len(c.Senders) {
|
||||
// mark sender as SETUP
|
||||
c.Senders[i].Media.ID = MethodSetup
|
||||
interleaved := fmt.Sprintf("%d-%d", i*2, i*2+1)
|
||||
|
||||
// Check if transport already contains the 'interleaved' parameter
|
||||
if strings.Contains(transport, "interleaved=") {
|
||||
// If so, just update the interleaved value
|
||||
res.Header.Set("Transport", strings.Replace(transport, "interleaved=[^;]*", "interleaved="+interleaved, 1))
|
||||
} else {
|
||||
res.Status = "400 Bad Request"
|
||||
// Otherwise, append the interleaved parameter
|
||||
res.Header.Set("Transport", transport+";interleaved="+interleaved)
|
||||
}
|
||||
} else {
|
||||
res.Header.Set("Transport", transport+tr)
|
||||
res.Status = "400 Bad Request"
|
||||
}
|
||||
} else {
|
||||
res.Status = "461 Unsupported transport"
|
||||
res.Header.Set("Transport", tr)
|
||||
}
|
||||
|
||||
if err = c.WriteResponse(res); err != nil {
|
||||
|
Reference in New Issue
Block a user