hook通知携带url参数

This commit is contained in:
yangjiechina
2024-06-17 23:34:04 +08:00
parent cb4eed8389
commit 58d800a611
11 changed files with 77 additions and 21 deletions

View File

@@ -70,14 +70,7 @@ func (h handler) Process(session *session, method string, url_ *url.URL, headers
return fmt.Errorf("please establish a session first")
}
source := strings.TrimSpace(url_.Path)
if strings.HasPrefix(source, "/") {
source = source[1:]
}
if len(strings.TrimSpace(source)) == 0 {
return fmt.Errorf("the request source cannot be empty")
}
source, _ := stream.Path2SourceId(url_.Path, "")
//反射调用各个处理函数
results := m.Call([]reflect.Value{
@@ -138,6 +131,7 @@ func (h handler) OnDescribe(request Request) (*http.Response, []byte, error) {
request.session.response(response, []byte(sdp))
})
sink_.SetUrlValues(request.url.Query())
_, code := stream.PreparePlaySink(sink_)
if utils.HookStateOK != code {
return nil, nil, fmt.Errorf("hook failed. code:%d", code)
@@ -150,7 +144,9 @@ func (h handler) OnDescribe(request Request) (*http.Response, []byte, error) {
func (h handler) OnSetup(request Request) (*http.Response, []byte, error) {
var response *http.Response
query, err := url.ParseQuery(request.url.RawQuery)
//修复rtsp拉流携带参数,参数解析失败.
params := strings.ReplaceAll(request.url.RawQuery, "/?", "&")
query, err := url.ParseQuery(params)
if err != nil {
return nil, nil, err
}

View File

@@ -160,6 +160,10 @@ func (s *sink) Close() {
s.BaseSink.Close()
for _, sender := range s.senders {
if sender == nil {
continue
}
if sender.Rtp != nil {
sender.Rtp.Close()
}

View File

@@ -267,7 +267,7 @@ func NewTransStream(addr net.IPAddr, urlFormat string) stream.TransStream {
}
func TransStreamFactory(source stream.Source, protocol stream.Protocol, streams []utils.AVStream) (stream.TransStream, error) {
trackFormat := source.Id() + "?track=%d"
trackFormat := "?track=%d"
return NewTransStream(net.IPAddr{
IP: net.ParseIP(stream.AppConfig.PublicIP),
Zone: "",