golanggohlsrtmpwebrtcmedia-serverobs-studiortcprtmp-proxyrtmp-serverrtprtsprtsp-proxyrtsp-relayrtsp-serversrtstreamingwebrtc-proxy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
60 lines
1.5 KiB
package hooks |
|
|
|
import ( |
|
"github.com/bluenviron/mediamtx/internal/conf" |
|
"github.com/bluenviron/mediamtx/internal/defs" |
|
"github.com/bluenviron/mediamtx/internal/externalcmd" |
|
"github.com/bluenviron/mediamtx/internal/logger" |
|
) |
|
|
|
// OnReadyParams are the parameters of OnReady. |
|
type OnReadyParams struct { |
|
Logger logger.Writer |
|
ExternalCmdPool *externalcmd.Pool |
|
Conf *conf.Path |
|
ExternalCmdEnv externalcmd.Environment |
|
Desc defs.APIPathSourceOrReader |
|
Query string |
|
} |
|
|
|
// OnReady is the OnReady hook. |
|
func OnReady(params OnReadyParams) func() { |
|
var env externalcmd.Environment |
|
var onReadyCmd *externalcmd.Cmd |
|
|
|
if params.Conf.RunOnReady != "" || params.Conf.RunOnNotReady != "" { |
|
env = params.ExternalCmdEnv |
|
env["MTX_QUERY"] = params.Query |
|
env["MTX_SOURCE_TYPE"] = params.Desc.Type |
|
env["MTX_SOURCE_ID"] = params.Desc.ID |
|
} |
|
|
|
if params.Conf.RunOnReady != "" { |
|
params.Logger.Log(logger.Info, "runOnReady command started") |
|
onReadyCmd = externalcmd.NewCmd( |
|
params.ExternalCmdPool, |
|
params.Conf.RunOnReady, |
|
params.Conf.RunOnReadyRestart, |
|
env, |
|
func(err error) { |
|
params.Logger.Log(logger.Info, "runOnReady command exited: %v", err) |
|
}) |
|
} |
|
|
|
return func() { |
|
if onReadyCmd != nil { |
|
onReadyCmd.Close() |
|
params.Logger.Log(logger.Info, "runOnReady command stopped") |
|
} |
|
|
|
if params.Conf.RunOnNotReady != "" { |
|
params.Logger.Log(logger.Info, "runOnNotReady command launched") |
|
externalcmd.NewCmd( |
|
params.ExternalCmdPool, |
|
params.Conf.RunOnNotReady, |
|
false, |
|
env, |
|
nil) |
|
} |
|
} |
|
}
|
|
|