@ -235,7 +235,7 @@ type path struct {
@@ -235,7 +235,7 @@ type path struct {
setupPlayRequests [ ] pathReaderSetupPlayReq
stream * stream
onDemandCmd * externalcmd . Cmd
onPublishCmd * externalcmd . Cmd
onReadyCmd * externalcmd . Cmd
onDemandReadyTimer * time . Timer
onDemandCloseTimer * time . Timer
onDemandState pathOnDemandState
@ -622,6 +622,18 @@ func (pa *path) sourceSetReady(tracks gortsplib.Tracks) {
@@ -622,6 +622,18 @@ func (pa *path) sourceSetReady(tracks gortsplib.Tracks) {
}
pa . parent . onPathSourceReady ( pa )
if pa . conf . RunOnReady != "" {
pa . log ( logger . Info , "runOnReady command started" )
pa . onReadyCmd = externalcmd . NewCmd (
pa . externalCmdPool ,
pa . conf . RunOnReady ,
pa . conf . RunOnReadyRestart ,
pa . externalCmdEnv ( ) ,
func ( co int ) {
pa . log ( logger . Info , "runOnReady command exited with code %d" , co )
} )
}
}
func ( pa * path ) sourceSetNotReady ( ) {
@ -630,9 +642,9 @@ func (pa *path) sourceSetNotReady() {
@@ -630,9 +642,9 @@ func (pa *path) sourceSetNotReady() {
r . close ( )
}
if pa . onPublish Cmd != nil {
pa . onPublish Cmd . Close ( )
pa . onPublish Cmd = nil
if pa . onReady Cmd != nil {
pa . onReady Cmd . Close ( )
pa . onReady Cmd = nil
pa . log ( logger . Info , "runOnReady command stopped" )
}
@ -696,11 +708,6 @@ func (pa *path) doPublisherRemove() {
@@ -696,11 +708,6 @@ func (pa *path) doPublisherRemove() {
} else {
pa . sourceSetNotReady ( )
}
} else {
for r := range pa . readers {
pa . doReaderRemove ( r )
r . close ( )
}
}
pa . source = nil
@ -788,18 +795,6 @@ func (pa *path) handlePublisherRecord(req pathPublisherRecordReq) {
@@ -788,18 +795,6 @@ func (pa *path) handlePublisherRecord(req pathPublisherRecordReq) {
pa . sourceSetReady ( req . tracks )
if pa . conf . RunOnPublish != "" {
pa . log ( logger . Info , "runOnPublish command started" )
pa . onPublishCmd = externalcmd . NewCmd (
pa . externalCmdPool ,
pa . conf . RunOnPublish ,
pa . conf . RunOnPublishRestart ,
pa . externalCmdEnv ( ) ,
func ( co int ) {
pa . log ( logger . Info , "runOnPublish command exited with code %d" , co )
} )
}
req . res <- pathPublisherRecordRes { stream : pa . stream }
}