add server-h264-from-disk example (#719) (#727)

This commit is contained in:
Alessandro Ros
2025-03-23 16:53:54 +01:00
committed by GitHub
parent 8c6495c33b
commit e46ae59920
10 changed files with 278 additions and 35 deletions

View File

@@ -19,7 +19,7 @@ import (
// 3. allow multiple clients to read that stream with TCP
type serverHandler struct {
s *gortsplib.Server
server *gortsplib.Server
mutex sync.RWMutex
stream *gortsplib.ServerStream
publisher *gortsplib.ServerSession
@@ -44,8 +44,8 @@ func (sh *serverHandler) OnSessionOpen(ctx *gortsplib.ServerHandlerOnSessionOpen
func (sh *serverHandler) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionCloseCtx) {
log.Printf("session closed")
sh.mutex.Lock()
defer sh.mutex.Unlock()
sh.mutex.RLock()
defer sh.mutex.RUnlock()
// if the session is the publisher,
// close the stream and disconnect any reader.
@@ -79,8 +79,8 @@ func (sh *serverHandler) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) (
func (sh *serverHandler) OnAnnounce(ctx *gortsplib.ServerHandlerOnAnnounceCtx) (*base.Response, error) {
log.Printf("announce request")
sh.mutex.Lock()
defer sh.mutex.Unlock()
sh.mutex.RLock()
defer sh.mutex.RUnlock()
// disconnect existing publisher
if sh.stream != nil {
@@ -90,7 +90,7 @@ func (sh *serverHandler) OnAnnounce(ctx *gortsplib.ServerHandlerOnAnnounceCtx) (
// create the stream and save the publisher
sh.stream = &gortsplib.ServerStream{
Server: sh.s,
Server: sh.server,
Desc: ctx.Description,
}
err := sh.stream.Initialize()
@@ -165,13 +165,13 @@ func main() {
// configure the server
h := &serverHandler{}
h.s = &gortsplib.Server{
h.server = &gortsplib.Server{
Handler: h,
TLSConfig: &tls.Config{Certificates: []tls.Certificate{cert}},
RTSPAddress: ":8322",
}
// start server and wait until a fatal error
log.Printf("server is ready")
panic(h.s.StartAndWait())
log.Printf("server is ready on %s", h.server.RTSPAddress)
panic(h.server.StartAndWait())
}