cleanup server-h264-save-to-disk example

This commit is contained in:
aler9
2022-11-01 10:24:36 +01:00
parent 035ee70202
commit 84cb8a7004

View File

@@ -16,7 +16,7 @@ import (
type serverHandler struct { type serverHandler struct {
mutex sync.Mutex mutex sync.Mutex
stream *gortsplib.ServerStream publisher *gortsplib.ServerSession
h264TrackID int h264TrackID int
h264track *gortsplib.TrackH264 h264track *gortsplib.TrackH264
mpegtsMuxer *mpegtsMuxer mpegtsMuxer *mpegtsMuxer
@@ -44,11 +44,8 @@ func (sh *serverHandler) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionClo
sh.mutex.Lock() sh.mutex.Lock()
defer sh.mutex.Unlock() defer sh.mutex.Unlock()
// close the stream and disconnect any reader. // allow someone else to publish
if sh.stream != nil { sh.publisher = nil
sh.stream.Close()
sh.stream = nil
}
} }
// called after receiving an ANNOUNCE request. // called after receiving an ANNOUNCE request.
@@ -58,7 +55,7 @@ func (sh *serverHandler) OnAnnounce(ctx *gortsplib.ServerHandlerOnAnnounceCtx) (
sh.mutex.Lock() sh.mutex.Lock()
defer sh.mutex.Unlock() defer sh.mutex.Unlock()
if sh.stream != nil { if sh.publisher != nil {
return &base.Response{ return &base.Response{
StatusCode: base.StatusBadRequest, StatusCode: base.StatusBadRequest,
}, fmt.Errorf("someone is already publishing") }, fmt.Errorf("someone is already publishing")
@@ -87,8 +84,7 @@ func (sh *serverHandler) OnAnnounce(ctx *gortsplib.ServerHandlerOnAnnounceCtx) (
}, err }, err
} }
// create a stream and save data sh.publisher = ctx.Session
sh.stream = gortsplib.NewServerStream(ctx.Tracks)
sh.h264TrackID = h264TrackID sh.h264TrackID = h264TrackID
sh.mpegtsMuxer = mpegtsMuxer sh.mpegtsMuxer = mpegtsMuxer
@@ -103,7 +99,7 @@ func (sh *serverHandler) OnSetup(ctx *gortsplib.ServerHandlerOnSetupCtx) (*base.
return &base.Response{ return &base.Response{
StatusCode: base.StatusOK, StatusCode: base.StatusOK,
}, sh.stream, nil }, nil, nil
} }
// called after receiving a RECORD request. // called after receiving a RECORD request.