diff --git a/main.go b/main.go index 380990d..e199bc2 100644 --- a/main.go +++ b/main.go @@ -40,16 +40,16 @@ func (conf *RTSPConfig) OnEvent(event any) { s.Start() if conf.PullOnStart { for streamPath, url := range conf.PullList { - if err := plugin.Pull(streamPath, url, new(RTSPPuller), false); err != nil { - plugin.Error("pull", zap.String("streamPath", streamPath), zap.String("url", url), zap.Error(err)) + if err := RTSPPlugin.Pull(streamPath, url, new(RTSPPuller), false); err != nil { + RTSPPlugin.Error("pull", zap.String("streamPath", streamPath), zap.String("url", url), zap.Error(err)) } } } case SEpublish: for streamPath, url := range conf.PushList { if streamPath == v.Stream.Path { - if err := plugin.Push(streamPath, url, new(RTSPPusher), false); err != nil { - plugin.Error("push", zap.String("streamPath", streamPath), zap.String("url", url), zap.Error(err)) + if err := RTSPPlugin.Push(streamPath, url, new(RTSPPusher), false); err != nil { + RTSPPlugin.Error("push", zap.String("streamPath", streamPath), zap.String("url", url), zap.Error(err)) } } } @@ -57,8 +57,8 @@ func (conf *RTSPConfig) OnEvent(event any) { if conf.PullOnSubscribe { for streamPath, url := range conf.PullList { if streamPath == v.Path { - if err := plugin.Pull(streamPath, url, new(RTSPPuller), false); err != nil { - plugin.Error("pull", zap.String("streamPath", streamPath), zap.String("url", url), zap.Error(err)) + if err := RTSPPlugin.Pull(streamPath, url, new(RTSPPuller), false); err != nil { + RTSPPlugin.Error("pull", zap.String("streamPath", streamPath), zap.String("url", url), zap.Error(err)) } break } @@ -73,7 +73,7 @@ var rtspConfig = &RTSPConfig{ RTCPAddr: ":8001", ReadBufferSize: 2048, } -var plugin = InstallPlugin(rtspConfig) +var RTSPPlugin = InstallPlugin(rtspConfig) func filterStreams() (ss []*Stream) { Streams.RLock() @@ -92,15 +92,19 @@ func (*RTSPConfig) API_list(w http.ResponseWriter, r *http.Request) { } func (*RTSPConfig) API_Pull(rw http.ResponseWriter, r *http.Request) { - err := plugin.Pull(r.URL.Query().Get("streamPath"), r.URL.Query().Get("target"), new(RTSPPuller), r.URL.Query().Has("save")) + err := RTSPPlugin.Pull(r.URL.Query().Get("streamPath"), r.URL.Query().Get("target"), new(RTSPPuller), r.URL.Query().Has("save")) if err != nil { http.Error(rw, err.Error(), http.StatusBadRequest) + } else { + rw.Write([]byte("ok")) } } func (*RTSPConfig) API_Push(rw http.ResponseWriter, r *http.Request) { - err := plugin.Push(r.URL.Query().Get("streamPath"), r.URL.Query().Get("target"), new(RTSPPusher), r.URL.Query().Has("save")) + err := RTSPPlugin.Push(r.URL.Query().Get("streamPath"), r.URL.Query().Get("target"), new(RTSPPusher), r.URL.Query().Has("save")) if err != nil { http.Error(rw, err.Error(), http.StatusBadRequest) + } else { + rw.Write([]byte("ok")) } } diff --git a/publisher.go b/publisher.go index 8357cb8..1b87f8f 100644 --- a/publisher.go +++ b/publisher.go @@ -126,7 +126,7 @@ func (p *RTSPPublisher) SetTracks() error { // 复用AVCC写入逻辑,解析出AAC的配置信息 at.WriteAVCC(0, append([]byte{0xAF, 0}, asc...)) } else { - plugin.Warn("aac no config") + RTSPPlugin.Warn("aac no config") } default: return fmt.Errorf("unsupport codec:%s", keyval[0]) diff --git a/server.go b/server.go index 6b8b374..40ee774 100644 --- a/server.go +++ b/server.go @@ -14,22 +14,22 @@ type RTSPIO struct { } func (conf *RTSPConfig) OnConnOpen(ctx *gortsplib.ServerHandlerOnConnOpenCtx) { - plugin.Debug("conn opened") + RTSPPlugin.Debug("conn opened") } func (conf *RTSPConfig) OnConnClose(ctx *gortsplib.ServerHandlerOnConnCloseCtx) { - plugin.Debug("conn closed") + RTSPPlugin.Debug("conn closed") if p, ok := conf.LoadAndDelete(ctx.Conn); ok { p.(IIO).Stop() } } func (conf *RTSPConfig) OnSessionOpen(ctx *gortsplib.ServerHandlerOnSessionOpenCtx) { - plugin.Debug("session opened") + RTSPPlugin.Debug("session opened") } func (conf *RTSPConfig) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionCloseCtx) { - plugin.Debug("session closed") + RTSPPlugin.Debug("session closed") if p, ok := conf.LoadAndDelete(ctx.Session); ok { p.(IIO).Stop() } @@ -37,10 +37,10 @@ func (conf *RTSPConfig) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionClos // called after receiving a DESCRIBE request. func (conf *RTSPConfig) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error) { - plugin.Debug("describe request") + RTSPPlugin.Debug("describe request") var suber RTSPSubscriber suber.SetIO(ctx.Conn.NetConn()) - if err := plugin.Subscribe(ctx.Path, &suber); err == nil { + if err := RTSPPlugin.Subscribe(ctx.Path, &suber); err == nil { conf.Store(ctx.Conn, &suber) return &base.Response{ StatusCode: base.StatusOK, @@ -90,7 +90,7 @@ func (conf *RTSPConfig) OnRecord(ctx *gortsplib.ServerHandlerOnRecordCtx) (*base func (conf *RTSPConfig) OnAnnounce(ctx *gortsplib.ServerHandlerOnAnnounceCtx) (*base.Response, error) { p := &RTSPPublisher{} p.SetIO(ctx.Conn.NetConn()) - if err := plugin.Publish(ctx.Path, p); err == nil { + if err := RTSPPlugin.Publish(ctx.Path, p); err == nil { p.tracks = ctx.Tracks p.stream = gortsplib.NewServerStream(ctx.Tracks) if err = p.SetTracks(); err != nil {